Как ускорить cs cart
Как ускорить cs cart
2. Оптимизация изображений
При загрузке в интернет-магазин изображений, обращайте внимание на размер и формат изображения. Слишком большие изображения долго загружаются и замедляют загрузку страницы в общем и целом.
Для более продвинутых пользователей, на хостинге можно попытаться настроить ежедневное или еженедельное автоматическое сжатие всех изображений в каталоге веб-сайта с названием images.
Для этого можно добавить в cron планировщик скрипты заданий, которые будут в ночное время рекурсивно искать в папке images картинки и сжимать их, тем самым уменьшая их размер.
3. Общие рекомендации
3.3. Не выводить сразу весь каталог товаров на главную страницу сайта, так как главная страница будет открываться дольше обычного.
3.4. Не рекомендуется по умолчанию на одной странице выводить более 50 товаров одновременно. Чем больше товаров на странице будет отображаться по умолчанию, тем большее количество запросов к СуБД MySQL и соответственно затрачивается больше времени на окрытие страницы.
3.5. Не рекомендуется подключать множество сторонних виджетов и помощников: так называемых обратных звонков, чатов, сборы метрик и т.д., т.к те javascript и прочие ресурсы, которые будут подгружаться со стороннего сервера, могут так же повлиять на скорость отображения страницы веб-сайта.
3.7. С целью снижения бесполезной нагрузки на сайт, важно ограничивать доступ для поисковых роботов и других ботов к тем страницам, которые не нуждаются в поиске, а так же устанавливать с помощью параметра crawl-delay в robots.txt таймаут для поисковых ботов, которые обращаются к страницам сайта.
3.8 Если для вас очевидно, что интернет-магазин имеет достаточно большое количество товаров (более 1000), он вполне себе посещаем и от его стабильной работы напрямую зависит доход компании, заранее планируйте бюджет на будещее для возможной аренды выделенного или виртуального сервера с большим запасом ресурсов. Это, в первую очередь, в интересах бизнесс-процессов магазина. Не один тариф виртуальныого хостинга в 99% случаях не сможет позволить полноценно использовать большое количество ресурсов при большом количестве товаров в интернет-магазине на cs-cart.
Как без особых технических навыков увеличить производительность CS-Cart и CS-Cart для маркетплейсов
Перед тем, как начать разговор об увеличении производительности, крайне важно определить, что вы хотите улучшать, как и зачем. Любая оптимизация подразумевает исправление или оптимизацию кода проекта или повышение мощности вашего сервера, а это уже затрагивает финансовую сторону.
Все рекомендации и действия по оптимизации проектов, представленные в этой статье, могут нарушить работу магазина. Поэтому мы просим быть максимально аккуратными в своих действиях и, если что-то пошло не так, отменить ваши предыдущие действия и обратиться за помощью к специалистами CS-Cart или вашего хостинга с описанием того, что привело к проблеме.
1. Обновите CS-Cart или Multi-Vendor, все темы и модули
Обновление ядра CS-Cart, тем и модулей важно, потому что в новых версиях есть патчи производительности, патчи для улучшения и оптимизации процессов работы и для исправления багов и уязвимостей.
2. Обновите версию PHP и используйте его возможности
Найдите максимальную версию PHP, поддерживаемую вашей версией CS-Cart или Multi-Vendor.
Нагрузочные тесты, проведенные нами на последней версии CS-Cart и дефолтной теме без сторонних модулей, показывают, что производительность проекта можно увеличить, обновив версию PHP.
Отдельно хочется обратить внимание на то, что не все модули и версии CS-Cart поддерживают последние версии PHP, а это может привести к временной недоступности магазина. Перед обновлением вашего живого проекта мы рекомендуем провести проверку обновления локально или на тестовом сервере, ну или обратиться к разработчикам.
Используйте OPcache
Как работает PHP приложение? PHP открывает файлы с кодом, собирает их воедино, анализирует, токенизирует и компилирует, а затем выполняет. Так как файлов много, процесс их открытия, чтения и компиляции может отнимать значительные ресурсы. Но поскольку файлы меняются не так часто, то компиляцию каждый раз можно и не делать. Оптимальнее ее совершить один раз, закэшировать результат и после этого обращаться к нему.
Как раз это и делает модуль OPcache. Он сохраняет результат компиляции в кэш, чтобы потом работать с ним, а не генерировать его снова и снова. Таким образом, это ускоряет работу PHP за счет отсутствия процесса компиляции. А когда ваш код изменится, модуль OPcache сам инвалидирует кэш и совершит компиляцию снова. И это без необходимости его настраивать!
Используйте FastCGI
FastCGI — это один из вариантов подключения PHP к веб-серверу. PHP-FPM (FastCGI контейнер для PHP) и NGINX по умолчанию поддерживают совместную работу и сконфигурированы для максимальной производительности друг с другом без дополнительных прослоек.
Ограничьте PHP и изучите каждый параметр, который планируете менять
Да, как это странно ни звучит, но выставлять максимальные настройки для PHP — не всегда хорошее решение. Если вы выделяете больше памяти или не ограничиваете время выполнения каких-либо процессов, то другим компонентам системы может не хватить ресурсов, или они будут конкурировать друг с другом, пока за ними не придет OOM Killer 🙂
max_execution_time: 60
Мы не рекомендуем выставлять время работы скрипта больше 1 минуты для обычных процессов. Но такие процессы как импорты, экспорты и обновления CS-Cart бывают долгими и для этих процессов иногда может потребоваться увеличение “таймаутов” на стороне PHP и MySQL.
Как я сказал ранее, иногда бывают сложные процессы, требующие увеличения этого параметра, но чаще всего такие процессы можно разбить на более мелкие процессы и задачи, попросите разработчиков декомпозировать длительные и тяжелые процессы на более мелкие, так как это повысит надежность системы в целом и вашего проекта в частности.
memory_limit: «512M»
Не стоит устанавливать этот параметр слишком большим, так как OOM Killer будет в этом случае приходить за всем PHP сразу. И не забывайте, что у вас есть еще MySQL и какие-то еще компоненты – им тоже нужна память, а еще самой системе для работы нужна память.
Увеличивайте memory_limit только в крайних случаях.
3. Обновите и оптимизируйте базу данных (MySQL)
Переконвертируйте все таблицы из MyISAM в InnoDB
Это позволит базе данных при тяжелых и долгих запросах блокировать не всю таблицу, а только строки, с которыми идет работа. Попросите вашего хостера или системного администратора провести миграцию таблиц из MyISAM в InnoDB.
Вот главные отличия InnoDB и MyISAM:
Оптимизируйте настройки MySQL
Многие параметры нужно выставлять в зависимости от объема оперативной памяти, поэтому в рамках этой статьи мы не сможем дать точные значения, но укажем направление для исследования и размышления.
wait_timeout: 60
Очень долгий запрос в базу данных — это проблемный запрос, и он должен быть оптимизирован или переписан. Не нужно завышать время выполнения запроса, если он плохой — это приведет к проблемам для других запросов и процессов. Крайне редко бывают случаи когда этот параметр нужно увеличивать, но мы рекомендуем после проведения тяжелых работ этот параметр вернуть в исходное состояние.
Проверьте конфигурацию при помощи MySQLtuner
4. Увеличьте мощности сервера
Не все проблемы с производительностью сайта можно решить увеличением параметров конфигурационных файлов PHP, MySQL или обновлением серверного ПО. Иногда наступает момент когда нужно задуматься о повышении мощности сервера или тарифного плана у вашего хостера. Это может быть установка дополнительных аддонов, увеличение количества товаров или просто рост количества посетителей вашего сайта.
Также мы рекомендуем повышать мощности сервера на периоды распродаж и маркетинговых акций.
5. Используйте HTTP/2 соединение (и TLS 1.3)
Производительность в данном случае идет рядом с безопасностью. Протокол HTTP/2 (который доступен только для https соединений) уже значительно оптимизирован по сравнению с HTTP 1.1, так что простое внедрение этой спецификации способно улучшить производительность вашего проекта.
6. Твики и опции CS-Cart
В случае, если после внесения изменений у вас стал недоступен проект — отмените изменения и обратитесь к технической поддержке CS-Cart и вашему хостеру. Они помогут вам с настройкой.
Используйте Imagick
GD и Imagick — это два независимых друг от друга расширения PHP для работы с графикой. Оба модуля очень схожи, однако Imagick дает более качественный результат при создании миниатюр изображений. При этом используя меньше памяти.
Также обратите внимание на то, что если у вас в файле config.local.php напротив image_resize_lib стоит auto, то если у вас установлен imagic, то он будет использоваться по умолчанию.
Включите APCu для кэша и Redis для хранения сессий
Мы рекомендуем использовать APCu для хранения кэша в CS-Cart и Redis для хранения сессий. Обратите внимание на то, что подобное разделение снизит нагрузку на базу данных и диск, но добавит возможную точку отказа в виде дополнительного сервиса, работу которого нужно отслеживать тоже. А перенос кэша в APCu увеличит хотелки PHP 🙂
Включение этих параметров в конфигурационном файле требует преднастроенных APCu в PHP 7.0+ и Redis на вашем сервере. Перед изменением конфигурационного файла убедитесь что APCu и Redis у вас доступны для использования на сервере. В случае если вы не уверены или не знаете точно, обратитесь к системному администратору или хостеру для их настройки.
Для бэкапов используйте mysqldump
Mysqldump — это серверное расширение, которое установлено на всех современных хостингах, и все администраторы рекомендуют использовать его для создания бэкапов базы данных. Для бэкапов используйте mysqldump.
Для того, чтобы включить его, добавьте параметр backup_db_mysqldump со значением true в массив $config[‘tweaks’] или измените в файле config.local.php значение твика на true, как показано на скриншоте:
Добавьте блокировку бэкэнда для процессов генерации кэша
В последних версиях CS-Cart появилась возможность блокировать бэкенд на генерацию кэша для пользователей, если процесс генерации уже идет. Включить его можно через параметр $config[‘lock_backend’] = ‘database’; в файле config.local.php.
7. Как найти и исправить проблемы производительности CS-Cart без навыков программирования
Советы по быстрой оптимизации и поиску проблем с производительностью вашего проекта на CS-Cart и CS-Cart Multi-Vendor без навыков программирования описаны здесь.
А так же мы рассказывали в статье о том, что влияет на скорость работы сайта вцелом в этой статье с метриками, на которые можно и нужно обращать внимание.
Как сделать CS-Cart быстрее? Советы от Alt-team
В Alt-team есть традиция обучать своих коллег тому, что умеешь сам. Раз в месяц мы проводим творческие ITишные встречи, где один и программистов делиться своим опытом в разработке.
В августе 2019 очень интересный доклад на обозрение наших коллег представил один из наших ведущих разработчиков Евгений Шахин. Евгений рассказывал, как сделать CS-Cart магазин быстрее, какой сервер нужно использовать и от чего зависит скорость загрузки страниц CS-Cart движка.
Евгений работает с CS-Cart платформой около 7 лет. К нам он пришел талантливым студентом и уже через пару месяцев работы в компании, Евгению стали доверять масштабные проекты. Ежегодно Евгений успешно проходит официальный тест от CS-Cart, чем подтверждает свою квалификацию.
Итак, доклад Жени был настолько интересный с практической точки зрения, что мы решили на его основе написать статью и поделиться полезными знаниями по оптимизации скорости CS-Cart.
Сразу отмечу, что мы не будем говорить о результатах Google Page Speed Insights. Данный сервис, в основном, проверяет вёрстку. МЫ поговорим о проблемах в настройке сервера, работе MySQL запросов и о методах, как сделать загрузку страниц CS-Cart быстрее.
От чего зависит скорость работы CS-Cart?
Обычно, мы встречали 3 варианта веб серверов:
Согласно W3Tech.com, от 14 января, 2019, около 85% пользователей используют либо Apache сервер, либо Nginx.При этом Apache все же популярнее Nginx решения.
Давайте поговорим о разнице между Apache и Nginx. Как вы думаете, что быстрее работает? Nginx быстрее при определенных обстоятельствах.
Метод обработки соединений с клиентами | Отдаваемый контент | |
Apache | один процесс ОС — один запрос | статический и динамический (mod_php) |
Nginx | один процесс ОС — много запросов |