“Ускорить Magento” – основная проблема с Magento (Мадженто).
Вопрос ускорения Magento – появляется сразу после запуска интернет-магазина.
Несколько проверенных рецептов ускорения загрузки сайтов на Magento.
Стандартные способы ускорения работы Magento:
- Включить Flat catalog Product/Category – ускорения базы данных товаров/каталога. Но модули для Magento должны быть созданы с учетом Flat catalog, в противном случае Magento работать не будет.
- Включить стандартный кеш Magento.
- Хостинг с диском типа SSD – это ускорит работу сервера. Время обработки файлов ускоряется в сравнении с HDD. SSD диск должен стоять на сервере – по умолчанию.
Сайт на 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-х задач:
- Сохрание кеша HTML
- Сайт на Magento сканируется и сохраняется HTML страниц в текстовой файл
- Сканируется 1 или 2 раза в сутки, в зависимости как часто обновляется контент сайта, и сколько много страниц для сканирования
- Сканируются только страницы из карты сайта Sitemap.xml, скорее всего эти страницы наиболее запрашиваемые
- HTML-код страницы сохраняется в txt файл, название файла – это md5-хэш, также может добавляться суффикс в названии для мобильной версии (-mobile).
- Запрос к кешированой версии страницы
- Проверка есть ли у посетителя cookie (куки), например клиент залогинен или есть товар в корзине, или не использовать HTML кеш к посетителю
- Поиск кешированой страницы – по md5-хэш адреса URL
- Проверка версии кешированной страницы для мобильной версии
- Добавлять куки, если клиент добавил что-то в корзину
- Передавать через блок – параметр для кеша, если клиент залогинен или есть товар в корзине
Минусы:
- Проблема с товарами, которые распродались (out of stock) – а страница еще закешированная. Для этого можно добавить проверку на обновления товара/слада (Event) и обновлять кеш страницы.
- Если у товаров постоянно меняется цена, решение HTML кеш – не подойдет, или делать подгрузку данных цен через Ajax.
Что получилось?
Сайт на Magento грузится мега быстро, посетителям нравится быстрый сайт, и статистика сканирования скорости сайта улучилась в Google Webmaster.