«Ускорить 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.