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