Локализованный WordPress намного медленнее?

Я использую xdebug и webgrind для профилирования моей установки WordPress, потому что это немного медленно. Поскольку активировано около 20 плагинов, я решил, что xdebug сможет найти узкое место.

Однако, к моему удивлению, похоже, что процедуры локализации занимают большую часть времени выполнения. И да, я использую локализованную версию WordPress. См. Следующий вывод webgrind о единственной загрузке страницы ajax:

выход webgrind

Я вижу, что некоторые из моих плагинов принимают менее 1% времени выполнения каждого (измеряется в процентах от времени выполнения). Но процедуры перевода, Translation_Entry , MO , POMO используют более 30% от общей суммы.

Мне интересно, почему это так, и не следует ли мне использовать локализованную версию? Или я использую неправильный подход к производительности профиля?

Для каждого файла перевода WordPress должен его распаковать, затем каждая запись будет преобразована в объект Translation_Entry .

Короткая строка «caller_get_posts» устарела. Вместо этого используйте «ignore_sticky_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-plugin:

 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; } 

Локализация – большой успех в WordPress, и проблема кроется не в плагинах, а в реализации локализации WordPress (хотя хорошие написанные плагины могут уменьшить влияние). WP Performance Pack Plugin предлагает решение, поскольку оно отличается различными оптимизациями, которые идеально почти компенсируют влияние локализации локализации.