Мы только что выпустили WPML 4.3, который включает совершенно новый способ перевода строк. Админ-панель модуля Перевод строк выглядит так же, но работает иначе. Вместо чтения переводов из базы данных он генерирует и загружает файлы .mo. Это значительно снижает нагрузку на базу данных при переводе строк.
Почему мы переписали Перевод строк?
Предыдущая версия модуля Перевод строк загружала строки из базы данных и пыталась избежать загрузки файлов .mo. Некоторые крупные плагины WordPress поставляются с огромными файлами .mo, которые переводят каждый текст в плагине. Например, файлы .mo плагина WooCommerce содержат чуть более 8 000 строк. Другие крупные плагины имеют похожее количество строк.
Когда Вы запускаете сайт на английском языке, WordPress не загружает эти файлы .mo. Однако, когда Вы используете любой другой язык (даже один, а не многоязычный сайт), WordPress загружает все эти файлы .mo. Загрузка этих файлов занимает от 100 мс до более чем секунды, в зависимости от используемого Вами сервера. Эти файлы .mo будут загружаться на любой странице, где работает плагин (как правило, на всех страницах сайта).
До выхода WPML 4.3 мы пытались оптимизировать этот механизм. В WPML была опция, включенная по умолчанию, которая запрещала теме оформления и плагинам загружать файлы .mo. Вместо этого мы проверяли, какие строки нужны для каждой страницы, и загружали именно эти строки из базы данных.
В целом этот механизм работал хорошо, но иногда давал обратный эффект. Когда плагин обращался к множеству строк при каждой загрузке страницы, WPML загружал огромный список строк из базы данных вместо того, чтобы позволить плагину загрузить свой собственный файл .mo.
Поскольку со временем некоторые плагины разрастались, наш механизм оптимизации становился все менее эффективным.
В WPML 4.3 мы решили, что пора изменить подход. Мы перестали блокировать файлы .mo и загружать строки из базы данных. Теперь WPML не пытается оптимизировать время перевода других плагинов или тем оформления, а оптимизирует только свои собственные строки.
Как это повлияет на время загрузки моего сайта?
Это зависит от ситуации. Если Ваш сайт до сих пор работал быстро (как и большинство сайтов, использующих WPML), Вы не почувствуете значительных изменений в скорости. Например, на wpml.org большинство страниц загружается немного быстрее, а загрузка некоторых занимает чуть больше времени.
Причина, по которой некоторые страницы теперь загружаются немного дольше, заключается в том, что другие плагины загружают огромные файлы .mo. Увеличение скорости за счет оптимизации переводов строк нивелируется временем загрузки файлов .mo других плагинов.
Однако эти колебания очень малы, и мы можем измерить их только с помощью продвинутых инструментов профилирования. Сайт, который до сих пор работал быстро, в целом продолжит работать быстро и с WPML 4.3.
Некоторые сайты, страдавшие от медленной загрузки, теперь будут загружаться намного быстрее. До выхода WPML 4.3 некоторым сайтам приходилось загружать десятки тысяч строк из базы данных. Это создавало значительную нагрузку на базу данных, потребляло много оперативной памяти и приводило к долгой загрузке страниц. На этих сайтах будет заметно очень существенное улучшение производительности.
Ожидаются ли еще оптимизации производительности?
Да. Теперь, когда мы устранили основные проблемы с производительностью, связанные с переводом строк, у нас появится больше возможностей для оптимизации.
Мы ожидаем обнаружить проблемы, которые потребуют совместной работы с разработчиками других плагинов и тем оформления. Производительность улучшается больше всего, когда плагины и темы оформления загружают меньше строк. Большинство других разработчиков плагинов и тем оформления рады сотрудничать с нами, и мы уверены, что сможем решить почти любую проблему с производительностью, которая возникнет в будущем. Процесс оптимизации почти всегда одинаков:
- Разделение огромных файлов .mo на несколько файлов меньшего размера
- Загрузка нужных файлов на соответствующих страницах
Самое простое разделение — между строками, которые используются в админ-панели, и строками, которые отображаются на фронтенде. Более глубокая оптимизация дополнительно разделяет строки фронтенда в зависимости от типа страницы. Например, на сайтах электронной коммерции нет необходимости загружать строки, используемые при оформлении заказа, на каждой странице.
Конечно, когда появляется возможность для оптимизации внутри самого WPML, мы сразу же этим занимаемся.
Обновление, измерение и отчеты
WPML 4.3 развертывается прямо сейчас. Мы выпускаем его постепенно в течение одной-двух недель. Если Ваши сайты еще не получили это обновление, подождите немного, и Вы увидите его через несколько дней. Вы можете пропустить очередь и получить это обновление немедленно, перейдя на страницу Плагины –> Добавить новый, открыв вкладку Коммерческие и нажав кнопку Проверить обновления .
Если Вам кажется, что какая-либо страница на Вашем сайте стала загружаться дольше, мы предлагаем установить плагин Query Monitor (следуйте нашему руководству по анализу проблем с производительностью с помощью Query Monitor). Обратите внимание, что в WPML 4.3 мы исправили серьезные проблемы совместимости с Query Monitor, поэтому отчеты, которые Вы видите, не подходят для версий до WPML 4.3.
Посмотрите, фигурируют ли вызовы WPML в отчетах о загрузке. Если это так, пожалуйста, сообщите нам в техническую поддержку WPML. Даже если Вы видите похожие обращения, создайте свое собственное. Нам понадобится доступ к Вашему сайту, поэтому лучше работать с каждым сайтом отдельно.
Конечно, мы будем очень рады услышать Ваши общие отзывы о производительности (сообщать об улучшениях не менее полезно 🙂). Оставляйте свои комментарии здесь, и мы обязательно Вам ответим.

