aucor/dynamic-mo-loader

支持对象缓存,优化WordPress的文本域加载

安装数: 53,922

依赖项: 2

建议者: 0

安全性: 0

星标: 47

关注者: 9

分支: 13

开放性问题: 11

类型:wordpress-muplugin

1.4.0 2019-10-17 11:12 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:58:28 UTC


README

将WordPress网站语言更改为非英文会减慢页面生成时间。这主要是因为文本域加载缓慢且效率低下。本插件基于Björn Ahrens的优秀工作,旨在通过只加载页面中使用的文本域并缓存它们来解决这个问题。

PO和MO文件设计用于与PHP Gettext扩展一起使用。但由于它是一个扩展,不是所有主机平台默认安装。为了克服这一障碍,WordPress完全重新实现了整个MO文件解析,完全忽略了使用本地gettext的可能性。WordPress的实现有点慢。

本插件有另一种MO解析实现,比默认实现更快。插件还只加载生成当前页面所需的文本域,而不是默认加载所有可用的文本域。由于前端页面通常只使用少数文本域的字符串,这导致前端性能大幅提升。

为了进一步提高性能,插件还将加载的文本域缓存到对象缓存中。为了获得最佳性能,您需要一个快速的对象缓存后端,如Redis、Memcached或APC(u)。

数字

以下实验是在一个不错的LEMP服务器上进行的,使用Nginx、MariaDB、php-fpm和Redis。服务器具有SSD。这是实际的页面生成时间,而不是服务器响应时间。

默认WordPress安装,php5: 0个活跃插件,Twentysixteen带默认小工具等。

                 en         fi          fi, cached
front page       26ms       37ms        29ms
post-new.php     47ms       81ms        61ms

实际的WordPress安装,php5: 15个活跃插件,Twentysixteen带默认小工具等。

                 en         fi          fi, cached
front page       95ms       165ms       101ms
post-new.php     208ms      330ms       295ms

默认WordPress安装,php7: 0个活跃插件,Twentysixteen带默认小工具等。

                 en         fi          fi, cached
front page       12ms       18ms        14ms
post-new.php     27ms       43ms        37ms

实际的WordPress安装,php7: 15个活跃插件,Twentysixteen带默认小工具等。

                 en         fi          fi, cached
front page       54ms       62ms        55ms
post-new.php     113ms      127ms       116ms

使用Xdebug进行验证

以下截图展示了如何跳过内置的WordPress翻译函数,并使用优化的动态加载类,从而将加载时间提高近一倍。

Xdebug

包含在WordPress核心中

计划在WordPress核心中实现本地gettext。如果那样,这个插件就会变得过时。然而,问题编号#17268已经开放了6年,可能不会很快实现。

许可证

GPLv2或更高版本