本地化的WordPress要慢得多吗?

时间:2013-04-28 作者:He Shiming

我正在使用xdebug和webgrind来分析我的WordPress安装,因为它有点慢。由于激活了大约20个插件,我认为xdebug将能够找到瓶颈。

然而,令我惊讶的是,本地化例程似乎占用了大部分执行时间。是的,我正在使用WordPress的本地化版本。请查看单个ajax页面加载的webgrind的以下输出:

webgrind output

我可以看到我的一些插件每个插件的执行时间不到1%(以执行时间的百分比衡量)。但是翻译程序,Translation_Entry, MO, POMO 使用超过总数的30%。

我想知道为什么会这样,我是否应该阻止使用本地化版本?还是我使用了错误的方法来分析性能?

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

对于每个翻译文件,WordPress必须将其解压缩,然后将每个条目转换为Translation_Entry 对象

不推荐使用短字符串“caller\\u get\\u posts”。改用“ignore\\u sticky\\u posts” 翻译时需要三倍的内存:

  \'"caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead.\' => 
  Translation_Entry::__set_state(array(
     \'is_plural\' => false,
     \'context\' => NULL,
     \'singular\' => \'"caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead.\',
     \'plural\' => NULL,
     \'translations\' => 
    array (
      0 => \'"caller_get_posts" ist veraltet. Bitte nutze stattdessen "ignore_sticky_posts".\',
    ),
     \'translator_comments\' => \'\',
     \'extracted_comments\' => \'\',
     \'references\' => 
    array (
    ),
     \'flags\' => 
    array (
    ),
  )),
这就是为什么正确编写的插件和主题不会无条件加载其语言文件的原因。不幸的是,没有多少正确编写的插件和主题…

WordPress翻译分为管理部分和前端部分,以减少内存影响。还是很多。

您可以使用mu插件阻止加载特定语言文件:

add_filter( \'override_load_textdomain\', \'stop_language_files\', 10, 2 );

function stop_language_files( $bool, $domain )
{
    if ( \'textdomain_you_do_not_want\' === $domain )
        return TRUE;

    return $bool;
}

SO网友:Björn

本地化对WordPress的性能有很大影响,问题不在于插件,而在于WordPress的本地化实现(尽管编写良好的插件可以减少影响)。WP Performance Pack 插件提供了一个解决方案,因为它具有不同的优化功能,理想情况下几乎可以抵消本地化带来的pefrormance影响。

结束

相关推荐

Performance on WPMS

我的WPMS站点托管在8核/32mb RAM服务器上,但响应时间非常长。我们有大约1000个博客(单个db上有35000多个表)和70000个页面浏览量。我认为我可以缩短响应时间,将具有更多页面浏览量的博客移动到单独的DB中,并使用hyper DB插件将所有博客拆分为每个DB 100个博客。你觉得怎么样?