0

WPML 3.5 включает в себя значительные изменения Перевода строк. После его выпуска мы узнали о ряде случаев, которые не проявляли себя во время разработки. Последующие обновления решают все проблемы и еще больше повышают производительность.

Исправления начиная с WPML 3.5

  • Исправлена необработанное исключение в случаях, когда столбца domain_name_context_md5 не было в таблице icl_strings
  • Исправлена критическая ошибка: необработанное исключение ‘InvalidArgumentException’ с сообщением «Идентификатор аргумента должен быть числовым и больше 0» при фильтрации постоянных ссылок
  • Исправлена критическая ошибка во время повышения версии: Ошибка базы данных WordPress: указанный ключ был слишком длинным; макс. длина ключа – 1000
  • Исправлена критическая ошибка: в случае PHP 5.2 объявление WPML_Post_Element::get_type() должно быть сравнимым с WPML_Translation_Element::get_type()
  • Удалена обратная косая черта вначале, чтобы избежать предупреждений в PHP до версии 5.3

Улучшения быстродействия

Мы внесли несколько изменений в новую таблицу, которая хранит строки и страницы, на которых они отображаются. Эти изменения значительно уменьшают размер таблицы, повышают производительность и снижают потребление памяти.

  • Одна большая таблица с запасом мощности разделена на две таблицы поменьше и эффективнее
  • Оптимизированные табличные индексы
  • Ограничено возможное увеличение таблицы для сайтов, использующих URL-аргументы, при помощи белого списка аргументов, изменяющих выбор страниц

Результаты

Мы измерили производительность нашего собственного сайта во время обновления версий. Вы можете посмотреть, как нагрузка снизилась, затем пошла вверх (когда табличные индексы не были оптимизированы), и как она опять стала меньше и еще ниже, чем вначале.

WPML 3.4 – Перевод строк загружается дольше, так как мы предварительно загружаем огромное множество строк
WPML 3.4 – Перевод строк загружается дольше, так как мы предварительно загружаем огромное множество строк

Перевод строк не работает, но теперь у нас есть таблица string_pages
Перевод строк не работает, но теперь у нас есть таблица string_pages

Мы разделили таблицу string_pages на две поменьше, но дополнительный указатель замедляет выбор
Мы разделили таблицу string_pages на две поменьше, но дополнительный указатель замедляет выбор

Таблицы поменьше и правильный указатель. Наконец-то у нас все в норме.
Таблицы поменьше и правильный указатель. Наконец-то у нас все в норме.

Абсолютные числа во всех этих графиках менее существенны, так как они были получены в разные дни недели. По пятницам у нас трафик намного ниже, чем по понедельникам. Чтобы увидеть разницу, обратите внимание на пропорции между сегментами. Первоначально для доступа к icl_strings нужно было примерно столько же времени, как и для вызова записей (что не очень хорошо). Теперь любой запрос на доступ к базе данных WPML длится в среднем 1/3 времени запроса к записи. Это очень важно, так как WPML необходимо загрузить целую массу строк, в то время как WordPress нужно лишь несколько записей.

Лучший процесс в следующий раз

Нам пришлось выпустить это обновление до полного измерения производительности, так как оно содержит изменения для WordPress 4.6. В будущем мы обязательно отвяжем улучшения производительности от совместимости с WordPress. Как только новая версия WordPress достигнет стадии «версии-кандидата», мы выпустим небольшое обновление только с изменениями совместимости. Со временем мы внесем более объемные изменения производительности, не связанные с исправлением ошибок и обновлениями совместимости, и выпустим их только после полного удовлетворения результатами.

Следующий выпуск WPML, как всегда, будет касаться стабильности и производительности. 99% сайтов под управлением WPML теперь работают бесперебойно, но еще есть и другие сайты с «уникальной» конфигурацией веб-серверов, PHP или базы данных. Мы включим решение этих вопросов в следующем выпуске. Кроме того, в него также будет включена оптимизация производительности для большей компактности внешнего интерфейса и интерфейса администратора.

Хотите связаться с нами?

Если у вас есть вопросы, идеи или предложения, оставьте комментарий. Мы будем очень рады вашим отзывам, и сделаем все возможное для удовлетворения ваших запросов.