0

Товар успешно добавлен в корзину

Оформить заказ

Оценка Google pageSpeed новой темы. Добавляем поддержку Emoji, внедряем поддержку различных типов таблиц MyISAM, InnoDB, Aria

Вы уже видели оценки googlePageSpeed новой темы оформления (на примере нашего демо-сайта)?

googlepagespeed 

Чуть меньшая оценка на главной и в карточке товара обуславливается наличием больших изображений на этих страницах.

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

Напомним, что googlePageSpeed – это удобный помощник, который показывает абсолютную оценку производительности сайта. Но не каждый сайт сможет набрать высокую оценку просто из-за своего наполнения, обилия скриптов, ограничений в производительности технологий, объема подключенных сторонних скриптов, верстки.

Google PageSpeed помогает выявить на сайте досадные ошибки в настройке, но гарантировано способен выдать самую высокую оценку только одностраничнику, состоящему из простого текста. Для остальных видов сайтов - гарантий - нет.

Поэтому бессмысленно гнаться за 100 баллами, если у вас на главной – JivoSite, Yandex Metrika, Google Analitics, Facebook retargeting pixel, подключена Яндекс.карта и представлена витрина из 100 товарных позиций с картинками.

Emoji ?

Новая неделя и новые улучшения платформы ReadyScript. В этот раз мы взялись за проблему использования emoji в ReadyScript. Напомним ее суть.

Таблицы в ReadyScript исторически всегда имели кодировку “utf8”. Данная кодировка удобная, мультиязычная, но она кодирует символ только тремя байтами и к сожалению, с помощью данной кодировки невозможно было дотянуться до символов Emoji. Чтобы можно было использовать эти «эмоциональные картинки» в заголовках, отзывах, описаниях товаров и других местах, нужна была 4х байтовая кодировка, которая появилась начиная с MySQL 5.5.3, она называется “utf8mb4”.

Перед нами возникла задача конвертации всех таблиц в новую кодировку, но эта задача привела нас к новой проблеме. Из-за того, что каждый символ теперь кодируется большим числом байтов, мы перестали укладываться в лимит по длине индексов. Напомним, что в Mysql до 5.7 максимальная длина ключей индекса может составлять 1000 байт в таблицах MyISAM и 767 байт в таблицах InnoDB.

Для решения данной проблемы, пришлось сократить длину многих полей. Пожалуй, единственным заметным местом будет сокращение значения строковой характеристики у товаров с 255 знаков до 180. Сегодня мы выпустили обновления как платформы, так и всех наших модулей в маркетплейсе, в которых проблема с длиной ключей в индексах – решена.

Как обновлять индивидуальные модули?

Если в интернет-магазине есть кастомные модули, то они могут потребовать актуализацию. Как разработчикам понять, что она нужна?

Установите новые обновления, перейдите в раздел Управление -> Настройка системы. Запустите справа утилиту «Конвертировать кодировку таблиц в utf8mb4». Если все пройдет успешно, то ничего делать не нужно. Если вы увидите, что какие-то таблицы не обновились, то значит у этих таблиц есть поля в индексах, которые превышают лимит по длине, нужно сокращать длину полей, входящих в индекс.

Исходите из того, что нужно укладываться в 767 байт. Один символ кодируется 4 байтами, значит 191 символ – это максимальная длина всех полей, входящих в индекс.

Сокращать длину полей нужно в ORM объектах PHP, затем исправлять структуру БД в настройках системы, затем нужно опять запускать утилиту «Конвертировать кодировку таблиц в utf8mb4» и смотреть за результатом. При необходимости еще сокращать длину полей.

Обновление

Перед установкой следующего обновления рекомендуем убедиться, что версия MySQL у вас не ниже 5.5.3, так как только в этой версии появилась кодировка utf8mb4, которая теперь будет считаться базовой кодировкой таблиц БД в ReadyScript.

В случае, если друг у вас Mysql имеет версию ниже, чем 5.5.3, вы можете создать в корне сайта файл _local_settings.php со следующим содержимым.

После этого устанавливать обновления, как обычно. Этим действием вы подскажете системе, что нужно принудительно использовать старую кодировку utf8 и соответственно поддержка emoji у вас не появится.

В случае, если MySQL у вас все же нужной версии, просто устанавливайте обновления как обычно, система попытается автоматически конвертировать все таблицы в новую кодировку.

Поддержка новых движков таблиц

Так исторически сложилось, что ReadyScript всегда работал с самым простым и быстрым для чтения типом таблиц MyISAM. Практика показывает, что данный тип таблиц отлично справляется с достаточно большой нагрузкой, несмотря на блокировку уровня таблицы.

Однако в случаях, когда магазин имеет большое число операций записи, например, это может быть когда у магазина настроен импорт из какой-либо системы обновленных данных каждые 10 минут, можно использовать другой тип таблиц InnoDB. Этот тип таблиц лучше работает в смешанном режиме чтения/записи за счет своих архитектурных особенностей.

Движок Aria, как заявляют производители MariaDB – это улучшенный движок MyISAM. Он работает быстрее и является более устойчивым к сбоям. Вот тут MariaDB сообщает, что в новых версиях Aria будет также поддерживать построчную блокировку.

Тип (или движок) таблиц в настоящее время можно выбрать только при установке новой копии ReadyScript. В инсталяторе появилась соответствующая опция.

select-table-engine

Мы рекомендуем переключать тип таблиц у действующих магазинов только при помощи квалифицированных программистов. После последнего обновления это будет сделать легче, так как длина всех ключей в ReadyScript сейчас укладывается в «самый жесткий лимит» - 767 байт.

 


02 августа 2021 11:36, Артем Полторанин
Рассказать друзьям: