Upon inspection using xhProf, I realized that the PHP implementation loading the MO files is really slow.
From my tests, about 25% to 40% of the time WordPress spends rendering the page is actually spent locating, parsing and merging all the translation files.
This plugin works by caching the whole $l10n variable holding all the text domains and overridding the load_textdomain
.
Caching is done using serialize and written to wp-content/uploads/l10n.pson
.
Be sure to regenerate the cache if a .mo changes.
Comparing WordPress Gettext loading vs this plugin.
Using the average response time of:
siege -c 1 -r 100 -b http://localhost/
Vanilla: Fresh install of WordPress
Common: WPML, Types, Views, and Gravity Forms
Total Cache: Common + Total Cache (APC object/database cache, no page cache)
BuddyPress: BP-Registration-Options, BP Show Friends, BuddyPress, BuddyPress Activity Plus, Gravity Forms, Invite Anyone, U BuddyPress Forum Attachment, U BuddyPress Forum Editor, User Switching
Vanilla Common Total Cache BuddyPress
Native 202 ms 565 ms 478 ms 567 ms
Cached 193 ms (-5%) 322 ms (-43%) 333 ms (-30%) 431 ms (-24%)