Skip to content

Ускорить Magento

«Ускорить Magento» — основная проблема с Magento (Мадженто).

Вопрос ускорения Magento — появляется сразу после запуска интернет-магазина.

 

 

Несколько проверенных рецептов ускорения загрузки сайтов на Magento.

Стандартные способы ускорения работы Magento:

  • Включить Flat catalog Product/Category — ускорения базы данных товаров/каталога. Но модули для Magento должны быть созданы с учетом Flat catalog, в противном случае Magento работать не будет.
  • Включить стандартный кеш Magento.
  • Хостинг с диском типа SSD — это ускорит работу сервера. Время обработки файлов ускоряется в сравнении с HDDSSD диск должен стоять на сервере — по умолчанию.

 

Сайт на Magento станет заметно быстрее.
Но при добавлении большого количества товаров и категорий — сайт становится заметно медленнее.

  • Кеш в Redis. Redis — это хранилище данных, легко-настраиваемое, быстрое. Для Magento необходимо установить дополнительный модуль — для хранения данных кеша в хранилище Redis.
    Magento работает заметно быстро. Кеш в Redis работает быстрее кеширования в файлах. Но есть и «ложка дёгтя в бочке мёда» 😉
    Если много данных хранится в Redis — то при обновлении кеша Magento может «подвиснуть» на несколько секунд-минут. Скорее всего причина в «блокировании» Redis, при «сбрасывании данных».
  • Версия базы данных — протестировать насколько быстрее работают версии базы данных MySQL.
  • Установить настройки кеширования запросов в базе данных MySQL.

 

Magento работает быстро, но при проверке скорости через сервис типа — Google PageSpeed Tools есть сомнения в скорости сайта.
SEO специалисты, очень любят этот сервис для проверки скорости сайта.
Google PageSpeed показывает общую статистику по скорости, есть Javascript/CSS/Картинки/HTML статистика.

  • Minify CSS — размер файлов CSS стилей.
  • Optimize images — картинки сайта должны быстро загружаться в браузер пользователя.
  • Minify JavaScript — файлы скриптов JavaScript требуется уменьшить.

Для решения этих пунктов — требуется скачать по ссылке «Download optimized image, JavaScript, and CSS resources for this page.» на странице проверки скорости.
Скачивается архив с картинками и файлами, и копируется в Magento.
Google оптимизировал картинки и Javascript/CSS — искать модули сжатия файлов не требуется
:) , copy+paste .

В Google PageSpeed доступно API — для автоматизации.

Обратить внимание следует на параметр — Reduce server response time — время ожидания ответа от сервера в запросе браузера, также называют TTFB (время до получения первого байта).

TTFB — должен быть, как можно низкое значение.
Идеально — скорость ответа сервера, такая же как при закрузке файла site.com/robots.txt .

Возникает вопрос — возможно ли с Magento TTFB — как у статического файла?
Возможно ли скорость загрузки как у Amazon?

Да, такое возможно.

Ускорить Magento, как и любой другой PHP сайт, можно используя только HTML кеш.

 

Кеш HTML страницы.

К примеру полное кеширования HTML страницы и при запросе от браузера возвращать HTML из кеша, без запросов к базе данных сайта.
Таким споcобом — сбрасывается время обработки базой данных.
В основном база данных «узкое место» Magento, при постоянном запросе просмотра страниц сайта. Например боты поисковых систем и сервисов — постоянные запросы на сканирование и большая нагрузка на сервер/базу данных.

Скорее всего гиганты e-commerce такие как Amazon, Aliexpress — используют готовые (сохраненные/кешированные) страницы каталога товаров.

Например — страница товара кешируется 1 раз в неделю/сутки, блок с корзиной подгружается через Ajax, блок с наличием товара/кнопка купить — также подгружается через Ajax.
В результате получается, сервер быстро работает — используя только HTML-файлы (текстовые файлы).

 

HTML кеш для Magento можно добавить c готовым решением — Varnish. Varnish — что-то наподобие прокси перед веб-сервером. Возможно Varnish не всем подойдет, чуть сложноват в настройке.

 

Некоторое время назад, занялся вопросом ускорения Magento только используя PHP/Magento.
Ниже пример HTML кеш для Magento, что получилось :) .

 

Логика работы HTML-кеша состоит из 3-х задач:

  1. Сохрание кеша HTML
    • Сайт на Magento сканируется и сохраняется HTML страниц в текстовой файл
    • Сканируется 1 или 2 раза в сутки, в зависимости как часто обновляется контент сайта, и сколько много страниц для сканирования
    • Сканируются только страницы из карты сайта Sitemap.xml, скорее всего эти страницы наиболее запрашиваемые
    • HTML-код страницы сохраняется в txt файл, название файла — это md5-хэш, также может добавляться суффикс в названии для мобильной версии (-mobile).
  2. Запрос к кешированой версии страницы
    • Проверка есть ли у посетителя cookie (куки), например клиент залогинен или есть товар в корзине, или не использовать HTML кеш к посетителю
    • Поиск кешированой страницы — по md5-хэш адреса URL
    • Проверка версии кешированной страницы для мобильной версии
  3. Добавлять куки, если клиент добавил что-то в корзину
    • Передавать через блок — параметр для кеша, если клиент залогинен или есть товар в корзине

 

 

Минусы:

  • Проблема с товарами, которые распродались (out of stock) — а  страница еще закешированная. Для этого можно добавить проверку на обновления товара/слада (Event) и обновлять кеш страницы.
  • Если у товаров постоянно меняется цена, решение HTML кеш — не подойдет, или делать подгрузку данных цен через Ajax.

Что получилось?
Сайт на Magento грузится мега быстро, посетителям нравится быстрый сайт, и статистика сканирования скорости сайта улучилась в Google Webmaster.

Magento 1.*