Магазин на OpenCart еле шевелится на дешёвом тарифе? Рассказали, как ускорить веб-ресурс даже на недорогом хостинге.
Введение
Если у вас интернет-магазин на OpenCart, вам наверняка знакома ситуация, когда страницы грузятся медленно, особенно на недорогом тарифе хостинга. Посетители теряют терпение и уходят, так и не совершив покупку. Медленный сайт — упущенная прибыль и падение лояльности клиентов. К счастью, даже на бюджетном хостинге можно существенно повысить скорость работы OpenCart-магазина. Нужно лишь правильно настроить систему.
В статье рассказали, как ускорить OpenCart на недорогом хостинге. Пошагово объяснили, как настроить кеш в магазине, включить GZIP-сжатие страниц и оптимизировать тяжёлые запросы к базе данных.
Надоел медленный хостинг? Выбирайте VPS у надёжного провайдера, такого как AdminVPS.
Почему OpenCart тормозит
Прежде чем приступать к оптимизации, стоит понять причины медленной работы. Начнём с того, что бюджетный хостинг накладывает строгие ограничения на ресурсы. В нём мало оперативной памяти, процессорное время делится между множеством сайтов, есть лимиты на обращения к базе данных. На старте магазин работает шустро, но по мере наполнения товарами и модулями нагрузка растёт, а мощности сервера не увеличиваются. В результате OpenCart начинает тормозить. Страницы дольше генерируются, каждый переход по каталогу заставляет движок выполнять десятки сложных операций, а база данных обрабатывает множество одинаковых запросов. Без кеширования эти операции повторяются для каждого посетителя. А ещё плохо оптимизированные изображения дополнительно замедляют загрузку сайта, и вот уже даже простой каталог может открываться несколько долгих секунд.
Ускорить OpenCart можно, перейдя на хостинг для OpenCart от AdminVPS. Такой хостинг полностью совместим с требованиями OpenCart, а круглосуточная техподдержка отвечает очень быстро, помогая вам в решении проблем с настройками. Дополнительно все тарифы защищены от DDoS-атак. При всех этих плюсах цены на хостинг остаются доступными для каждого владельца сайта! Если базового общего хостинга не хватает, переход на VPS даст вашему интернет-магазину необходимый запас производительности.
Однако даже без смены хостинга можно заметно ускорить OpenCart с помощью грамотной настройки. Ниже приведены практические шаги, которые разгрузят сервер и сделают сайт ощутимо быстрее.
Кеширование в OpenCart
Кеширование позволяет хранить результаты работы скриптов и запросов, чтобы повторно не выполнять их каждый раз. Проще говоря, OpenCart может запомнить однажды сформированные данные, такие как страницы, блоки, списки, и выдавать их из памяти или с диска при повторных запросах. Это радикально сокращает время генерации страниц и обращения к базе данных.
Зайдите в админ-панель OpenCart и откройте «Систему», далее «Настройки». Во вкладке «Сервер» найдите параметр, связанный с кешированием. Если имеется опция «Использовать кеш», обязательно включите её и сохраните настройки. В русской сборке ocStore механизм кеширования уже встроен и зачастую активирован по умолчанию, а в оригинальном OpenCart для расширенного кеширования может потребоваться установка отдельного модуля.
При необходимости установите модуль кеширования. В магазине OpenCart есть расширения, которые берут на себя ускорение за счёт кеша, как платные, так и бесплатные. С таким модулем при повторных визитах пользователей магазин отдаст уже готовый HTML, не затрачивая время на повторную генерацию.
Помните также про очистку кеша. После изменения контента кешированные данные могут устареть, поэтому предусмотрите их сброс. В админке или в настройках модуля есть кнопка «Очистить кеш». Пользуйтесь ей после важных обновлений, чтобы покупатели всегда видели актуальную информацию.
Сжатие страниц (GZIP)
Чем меньше весят страницы сайта, тем быстрее они загрузятся у посетителя. Для этого нужно включить сжатие содержимого (GZIP) на сервере и в настройках OpenCart.
Проверьте, включён ли на хостинге модуль mod_deflate для сжатия контента. Откройте файл .htaccess в корневой директории магазина и добавьте туда правила для сжатия основных типов файлов:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript
</IfModule>
Сохраните изменения. Теперь веб-сервер будет автоматически отдавать HTML, CSS, JS и другие текстовые файлы в сжатом виде. Браузер посетителя распакует их на лету и размер передаваемых данных сократится в разы. В итоге страницы и скрипты будут загружаться заметно быстрее, особенно при медленном интернет-соединении.
Чтобы настроить уровень сжатия в OpenCart, в админке перейдите в «Систему», далее в «Настройки». Откройте вкладку «Сервер» и найдите параметр «Уровень GZIP-сжатия». По умолчанию он равен 0. Поставьте значение 7 или 8 и сохраните. Чем выше цифра, тем сильнее сжатие, но и тем больше нагрузка на процессор сервера. Теперь страницы магазина будут сжиматься при отправке пользователю, экономя трафик и время.
Помимо HTML-страниц оптимизируйте статические файлы вашего сайта. Минифицируйте файлы CSS и JS, убрав из них всё лишнее, например, пробелы, комментарии, и они будут занимать меньше места. Можно использовать специальные инструменты или модули-оптимизаторы.
Не забудьте про изображения. Графика тяжелее всего остального на странице, поэтому её оптимизация критически важна. Уменьшайте физическое разрешение фотографий до нужного вам, чтобы не грузить впустую гигантские снимки, которые потом отображаются маленькими. Перед загрузкой изображений на сайт сжимайте их через сервисы вроде TinyPNG или программы-оптимизаторы. Также рекомендуется снизить качество JPEG в настройках OpenCart в разделе «Изображения» с дефолтных 90 % до 80 %. Визуально картинки останутся такими же, а размер файлов уменьшится. Дополнительно можно внедрить современные форматы изображений, например, WebP.
Оптимизация запросов к базе данных
База данных MySQL выступает двигателем вашего магазина. Если некоторые запросы к ней выполняются очень долго или слишком часто, это сказывается на общей скорости сайта. Рассмотрим, как снизить нагрузку на базу в OpenCart.
В настройках OpenCart по умолчанию включён подсчёт количества товаров в каждой категории. То есть, при заходе в категорию движок дополнительно считает, сколько товаров внутри каждой подкатегории, выполняя отдельный SQL-запрос на каждую. Рекомендуется отключить эту функцию. Для этого зайдите в админку OpenCart, перейдите на вкладку «Опции» настроек магазина и найдите параметр «Счётчик товаров в категории». Установите его в положение «Нет» и сохраните. После этого движок перестанет тратить время на подсчёт товаров при каждом открытии категорий.
В базе данных должны быть установлены индексы на полях, по которым происходят частые выборки. Зачастую в OpenCart основные поля уже проиндексированы, но если вы заметили, что какие-то страницы загружаются медленно, можно проверить наличие индексов на соответствующих колонках, например, на customer_id в таблице заказов. Добавить недостающий индекс можно через phpMyAdmin или консоль MySQL. Если вы не уверены в своих силах, лучше обратиться к специалисту. Грамотно настроенная индексация способна многократно ускорить выполнение часто повторяющихся запросов, так как база сможет находить нужные данные быстрее.
Если у вас есть доступ к настройкам сервера баз данных, имеет смысл включить кеширование повторяющихся запросов непосредственно в MySQL/MariaDB. Для этого в конфигурации сервера задайте параметр query_cache_type = ON и выделите память, например:
query_cache_size = 32M
32 мегабайта, в зависимости от размеров вашего каталога можно больше. После этого СУБД начнёт сама сохранять результаты одинаковых SELECT-запросов. Когда OpenCart повторно запросит одни и те же данные, база данных не будет заново их вычислять, а мгновенно вернёт сохранённый результат из кеша.
Используйте кеширование, чтобы избавить базу данных от лишней работы. Раз вы включили кеш в OpenCart, его можно применять для хранения результатов ресурсоёмких запросов. По сути, это аналог Query Cache, но со стороны PHP-сайта. Например, построение меню из сотен категорий нет смысла выполнять при каждом открытии страницы, достаточно сделать это один раз и сохранить итоговый HTML в кеше. Далее при загрузке страниц меню будет подставляться из кеша, без единого обращения к базе данных, практически мгновенно. По такому же принципу кешируются другие тяжёлые элементы.
Заключение
После выполнения всех описанных шагов ваш OpenCart-магазин ощутимо прибавит в скорости. Страницы начнут открываться заметно быстрее, и покупателям не придётся нервничать в ожидании загрузки. Довольный посетитель с гораздо большей вероятностью станет покупателем, так как быстрота сайта влияет на конверсию и доверие. Поисковые системы учитывают скорость сайта при ранжировании, так что ускорение может позитивно сказаться и на позициях ресурса в поиске.
Читайте в блоге:
- Что такое VPS-хостинг
- Выбираем движок для интернет-магазина: какая CMS лучше
- Как ускорить мобильную версию сайта на WordPress