модуль OpenCartBOOST - ускоритель OpenCart + AJAX загрузка модулей. Ускорение opencart


Как ускорить Opencart при большом кол-ве товаров? — Toster.ru

Имеется интернет-магазин канцелярии, 17500 позиций номенклатуры. Магазин очень долго работает. Все тормозит. Улучшение сервера результата не дало. Отключение подсчета кол-ва товаров, добавление индексов - не принесло ощутимой пользы. Все страницы очень долго грузятся. Тормозит все MySQL, поскольку в Opencart очень большие запросы, с множествой вложений и ORDER BY. Сейчас база MyIsam, где-то читал, что на InnoDB не советуют переводить OpenCart. В последнее время очень часто стали приходить отчеты по Яндекс.Метрике, что сайт недоступен. Кеширование Memcache включено - не помогает. Как можно его оптимизировать? Или на какой другой движок можно перейти? чтобы быстро и с минимальными затратами. Часто выполняемый медленный запрос MySQLCount: 46 Time=6.91s (317s) Lock=0.05s (2s) Rows=1.0 (46), SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = 'S' AND pd2.quantity = 'S' AND ((pd2.date_start = 'S' OR pd2.date_start < 'S') AND (pd2.date_end = 'S' OR pd2.date_end > 'S')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT N) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = 'S' AND ((ps.date_start = 'S' OR ps.date_start < 'S') AND (ps.date_end = 'S' OR ps.date_end > 'S')) ORDER BY ps.priority ASC, ps.price ASC LIMIT N) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = 'S') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = 'S') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = 'S') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = 'S') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = 'S' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = 'S' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = 'S' AND p.status = 'S' AND p.date_available <= 'S' AND p2s.store_id = 'S'

toster.ru

Ускорение загрузки сайтов на Opencart

Совместимость OpenCart 1.5.3.1, OpenCart 1.5.4.1, OpenCart 1.5.5.1, OpenCart 1.5.6, OpenCart 1.5.6.1, OpenCart 1.5.6.2, OpenCart 1.5.6.3, OpenCart 1.5.6.4, OpenCart 2.0, OpenCart 2.1, OpenCart 2.2, OpenCart 2.3, OCStore 1.5.3.1, OCStore 1.5.4.1, OCStore 1.5.5.1, OCStore 1.5.5.1.1, OCStore 1.5.5.1.2, OCStore 2.1, OcShop 1.5.6.4.х, Opencart.pro 2.0.3.х, Opencart.pro 2.1, Opencart.pro 2.3, MaxyStore 1.5.5.1.1, MaxyStore 2.0.1.1
Практически все владельцы магазинов на сборках Opencart рано или поздно сталкиваются с ситуацией, когда сайт начинает "тормозить". Страницы магазина, после добавления более 500 начинают медленно загружаться, в некоторых особо тяжелых случаях магазин начинает выдавать ошибку 500.

Это крайне негативное явление для вашего бизнеса по нескольким причинам:

Так или иначе, все эти факторы ведут либо к финансовым потерям, либо к финансовым затратам.

"Тормоза" Opencart происходят вследствие двух основных причин. Очень слабой реализации кеширования повторяющихся данных и недостаточная оптимизации базы данных.

В 95% случаев, устранение этих недостатков, достаточно для того, чтобы получить оптимальное время скорости загрузки страниц вашего магазина.

В базовый пакет оптимизации входит установка модуля TurboCache, который  позволяет кешировать все промежуточные данные стандартных модулей Opencart, а также оптимизация базы данных.

Во многих случаях при уменьшении скорости генерации страниц до одной секунды существенно увеличивается глубина просмотра и уменьшается показатель отказов, что автоматически за собой влечет увеличение конверсии.

В некоторых случаях, если вы используете нестандартную тему, или сторонние дополнения, этих методов может оказаться недостаточно, подобные ситуации могут потребовать дополнительного анализа компонентов системы, нагружающих сервер и их оптимизации. Возможен также перенос хранилища данных кеша в Memcache-контейнер. Для сайтов с большой нагрузкой, рекомендуется установка модуля Opencart Cache (стоимость подобных работ рассчитывается индивидуально).

Также опционально, вы можете заказать увеличении оценки GooglePageSpeed, которая влияет на позиции в поисковой выдаче страниц вашего магазина. (гарантированное увеличение оценки до 80 - от $50)

В стоимость пакета оптимизации входит:

  1. Оптимизация базы данных
  2. Установка кеширующего модуля turbo
  3. (Опционально) установка производительной библиотеки генерации изображений imagick
  4. (Опционально) подключение memcache - в случае необходимости
  5. Аудит производительности сторонних дополнений
  6. Pagespeed до показателей 75+
  7. Аудит конфигурации системы (проверка разрешений на папки, версий vqmod, библиотек подключения к базе данных (для версии 1.5)
  8. Установка оптимизированной библиотеки файлового кеша (для версии 1.5)
  9. Аудит robots.txt и его коррекция для снижения нагрузки, создаваемой поисковыми ботами.
  10. (Опционально) кастомная оптимизация модулей корзин, например kw_flycart
В некоторых редких случаях, ваш магазин может быть размещен либо на очень слабом сервере, либо на загруженном сервере с "жирными" соседями Оптимизация может быть проведена для магазинов, как  на оригинальном Opencart, так и для магазинов на различных сборках: Octore, Ocshop.Cms, Maxystore, Mijoshop.

Для магазинов на версиях 1.4.x, оптимизация возможно, но с некоторым ограничением набора методов.

liveopencart.ru

Как ускорить OpenCart за счёт кэширования страниц

Adam Thompson

Adam Thompson

Директор цифровых стратегий в 10x digital / RYP Marketing, где под его контролем находятся SEO, PPC, CRO, веб-дизайн и разработка проектов. Вошел в мир интернет-маркетинга в 2003 году.

Предлагаю вашему вниманию перевод статьи Адама Томпсона про оптимизацию скорости загрузки страниц OpenCart.

opencart-caching.png

Для интернет-пользователей и SEO-специалистов скорость загрузки страницы - важный фактор для сайтов электронной коммерции. Вся ваша напряжённая работа над дизайном, написанием контента и оптимизацией удобства использования магазина напрасны, если пользователи разочаруются медленной скоростью загрузки страниц и уйдут с вашего сайта.

К сожалению, популярная система электронной коммерции OpenCart не настроена достаточно хорошо для сайтов с большим количеством категорий и продуктов. Крупные интернет-магазины не увидят космической производительности, если будут использовать движок "как есть".

Однако, низкая производительность OpenCart связана с парой факторов, которые можно легко пофиксить, и в этом статье я расскажу как это сделать.

Благодаря открытому исходному коду OpenCart, разработчики могут "заглянуть под капот", чтобы ускорить его процессы. Один из наших клиентов, разработчик и владелец магазина Budget Neon на OpenCart, решил самостоятельно улучшить скоростные характеристики OpenCart. (Вы можете проверить скорость сайта Budget Neon, чтобы увидеть, насколько хорошо работают эти изменения.) Он поделился своими усовершенствованиями OpenCart в бесплатном и с открытым исходным кодом проекте под названием OCTurbo.

Почему важна скорость загрузки страниц

Согласно исследованию, проведенному компанией Akamai (прим. - специализируется на CDN и "облачных" сервисах) в 2009 году, интернет-пользователи ожидают загрузку страниц в течение двух секунд или меньше. Более того, то же исследование показало, что 40% пользователей уходят с сайта, как только скорость загрузки занимает больше, чем пару секунд. Данные не лгут: скорость загрузки страниц - важный фактор для успеха в электронной коммерции.

Гигант в сфере e-commerce Amazon выучил этот урок сложным путём, когда они обнаружили, что за каждые 100 миллисекунд задержки на их сайте, они теряют 1% в продажах.

Так что делать владельцам сайтов? В то время как существует множество факторов, влияющих на скорость загрузки страниц, кэширование на стороне сервера - один из лучших способов ускорить сайты, использующие в работе базу данных.

Бесплатные и open source системы кэширования для OpenCart

OCTurbo использует два типа кэширования на стороне сервера для ускорения загрузки страниц OpenCart: PHP вызов кэширования в категориях продуктов и на уровне страниц. Весь код доступен между сайтом OCTurbo и аккаунтом Керри на Github.

Вызов кэширования в категориях продуктов

Как показано на скриншоте ниже, OpenCart отображает количество продуктов для категорий:

Категории продуктов OpenCart

Оптимизация этого кода - "хлеб" OCTurbo для оптимизации OpenCart. Лежащий в основе код, который включает подсчёт продуктов в категориях невероятно "тяжёлый". При использовании стоковой версии OpenCart доступна возможность кэширования данных на основе файлов, OCTurbo способен сократить время загрузки страницы с 1-2 секунд до менее чем 0.5 секунд.

"Из коробки" вызов метода getTotalProducts() приводит к шквалу SQL-запросов, которые будут выполняться каждый раз при загрузке страницы. OCTurbo кэширует скрипт и последующие запросы. После первоначальной загрузки страницы, которая создаёт кэш, время загрузки страницы резко сокращается. Вы можете увидеть детали и фрагменты кода здесь.

Кэширование на уровне страниц

Второе направление стратегии OCTurbo использует кэширование на уровне страниц для оптимизации скорости OpenCart по всему сайту. Код внутри главного файла index.php OpenCart срабатывает в двух местах:

Во-первых, OCTurbo вставляет код в верхней части index.php, который проверяет имеется ли актуальная закэшированная копия запрошенного URL. Если закэшированная копия существует, то она берётся с диска без необходимости выполнения строк кода OpenCart или каких-либо запросов к базе данных.

В конце index.php, OCTurbo вставляет код с условием, который запускается только когда незакэшированная страница отправлена пользователю. После отправки незакэшированной версии пользователю, её копия записывается на диск.

Достигнутые результаты

Код необходимый для обоих основных функций кэширования OCTurbo потребует дополнительное количество ресурсов при первой загрузке каждой страницы. Сервер ещё должен будет обслуживать страницы для первого выполнения кода OCTurbo и создания кэша. Тем не менее, любые последующие нагрузки будут значительно быстрее.

Чтобы получить некоторые замеры по эффективности, мы сделали три тестовых одинаковых сайтов с OpenCart на трёх хостингах, работающих на том же DigitalOcean VPS с 512mb. На каждый сайт был загружены данные Amazon AWS.

Для нивелирования масштабов, мы измерили время, требуемое лишь для загрузки только HTML-кода каждой страницы, вместе с кодом OpenCart:

Сравнение замеров скорости

Как вы видите, результаты замечательные. С небольшим количеством кода, мы смогли ”сбрить” почти целую секунду времени у загрузки страницы стоковой версии OpenCart. Этот скриншот примера теста в сервисе Pingdom, показывающий, что Budget Neon загружается быстрее, чем 98% проверенных сайтов:

Проверка скорости загрузки сайта в Pingdom

Какие сайты должны использовать кэширование?

Кэширование ускоряет сайты, избавляя веб-сервер от необходимости выполнять многие строки PHP и несколько запросов к базе данных каждый раз, когда страница загружается. Вместо этого, сервер просто отдаёт статичные закэшированные страницы. Наибольший скачок в производительности, как правило, виден на сайтах со слабым сервером или хостинге, но все веб-сайты могут извлечь выгоду от кэширования. Я лично ещё не видел сайтов, где кэширование не помогло бы улучшить быстродействие.

Измерение результатов

Как проверить улучшило ли кэширование производительность вашего веб-сайта и на сколько? Есть несколько инструментов для этого, но наилучший подход - использование инструмента, который измеряет время загрузки страницы в секундах. (Такие инструменты, как PageSpeed Insights от Google, измеряют сайт на основе того, как много вы реализовали из предложенных ими лучших технических практик, а не фактической скорости загрузки страницы.)

Я использую Pingdom для измерения скорость веб-сайта. Вот как я рекомендую проводить тестирование скорости загрузки страницы до и после настройки кэширования:

  1. Перейти на сайт pingdom.com
  2. Провести три теста для каждого из двух ближайших мест к вашему веб-серверу.
  3. Вычислить среднюю скорость загрузки страницы в секундах.
  4. Настроить систему кэширования.
  5. Загрузите страницу один раз (чтобы сохранить страницу в кэше).
  6. Провести три теста для каждого из двух ближайших мест к вашему веб-серверу.
  7. Вычислить среднюю скорость загрузки страницы в секундах.
  8. Сравнить скорости до и после.

Другие решения по оптимизации скорости сайта

Реализация кэширования страниц - это важная часть оптимизации OpenCart для оптимального времени загрузки страниц, но это, конечно, не единственная область, на которую вы должны обратить внимание. Помимо кэширования, я рекомендую работать по следующим направлениям:

Если вы сфокусируетесь на кэшировании, чтобы уменьшить потребность работы вашего сервера, обновление сервера и оптимизация кода на стороне браузера в результате должны привести к гораздо более высокой скорости загрузки страниц на всём вашем сайте.

У вас есть собственные решения по тюнингу OpenCart? Если так, пожалуйста, скиньте ссылку в комментариях и поделитесь вашими наработками!

Источник: moz.com

cmsplugin.ru

Ускорение opencart/ocstore с помощью кеша

hqdefault

Если у вас на сайте с ростом трафика начали тормозить и долго открываться страницы, не спешите покупать дорогие модули «ускорители» или заказывать оптимизацию у сомнительных «специалистов». Есть прекрасное бесплатное решение v2pagecache.

Этот модуль позволяет закешировать страницы вашего сайта в статичные файлы, и этим значительно снизить нагрузку на сайт.

Модуль можно бесплатно скачать на гитхабе github.com/budgetneon/v2pagecache

Как скачать с гитхаба, есть такие кадры что не видят эту кнопку

После скачивания распакуйте архив у себя на компьютере и в файле upload\system\library\v2pagecache.php отредактируйте эти настройки.

class V2PageCache { private $expire='14400' ; // expire time, in seconds 14400 = 4 hours private $lang='en' ; // default language for site private $currency='USD' ; // default currency for site

class V2PageCache {

    private $expire='14400'   ; // expire time, in seconds 14400 = 4 hours

    private $lang='en'        ; // default language for site

    private $currency='USD'   ; // default currency for site

Впишите код языка по-умолчанию на вашем сайте и код валюты по-умолчанию.

class V2PageCache { private $expire='14400' ; // expire time, in seconds 14400 = 4 hours private $lang='ru' ; // default language for site private $currency='RUB' ; // default currency for site

class V2PageCache {

    private $expire='14400'   ; // expire time, in seconds 14400 = 4 hours

    private $lang='ru'        ; // default language for site

    private $currency='RUB'   ; // default currency for site

Также можно выставить другие настройки, в коде есть комментарии.

После этого залейте содержимое папки upload в корень вашего сайта.

Теперь перейдите в раздел модулей вашего магазина, установите модуль и включите его.

Модули - Google Chrome 2016-05-12 14.37.24

V2 Page Cache

Перейдите на сайт и походите по страницам, вы должны увидеть статистику по закешированым страницам

статистика пейджкеша

Все работает. Теперь если открыть закешированую страницы, она откроется намного быстрее.

Важно. Модуль работает только для гостей, для залогиненых пользователей отдаются незакешированые страницы.

Работает на: Opencart: 2.x OcStore: 2.x Ocnova.pro: 2.x

siter.org.ua

BOOST - ускоритель OpenCart + AJAX загрузка модулей | Opencart modules | Opencart extensions

Больше 10 тысяч загрузок модулей от sv2109! 

Что делает этот модуль?

Этот модуль позволяет ускорить время генерации страниц OpenCart до 100 раз! А в некоторых случаях до 1000 и даже больше.

Зачем?

 

Поэтому очень важно иметь сайт, который грузится быстро - такой сайт привлекательный как для пользователей, так и для поисковых систем.

 

Это так же экономит огромное количество ресурсов сервера, что позволит на 1 хостинг аккаунте держать больше сайтов, а так же держать большие сайты на более дешевых хостингах.

Как все работает?

Пользователь1 загружает Страницу1 (это может быть страница товара, категории, производителя, блога, информационная страница итд.). Через 10 секунд уже Пользователь2 загружает ту же самую страницу. Есть ли у этих страниц что-то общего? Да, и очень много - та же тема, то же меню, те же категории, товары, модули, футер итд. Так зачем же 1000 раз тратить огромные ресурсы сервера, чтобы создавать те же самые блоки? Не проще ли все общее сохранить в кеше и при последующих обращения не тратить ресурсы, а загрузить это из кеша?

Что делать с блоками, которые должны быть уникальными?

 

Например корзина должна быть уникальной для разных пользователей, строка приветствия должна содержать разные имена пользователей, модули, которым нужна уникальная информация, например модуль "случайные товары" должен содержать случайные товары итд.

 

Модуль BOOST решает эту задачу - в модуле есть инструмент, который позволяет загрузить все уникальные блоки асинхронно через AJAX.

 

То есть, простыми словами - все, что можно кешировать - кешируется, все что нельзя кешировать - подгружается через AJAX асинхронно. 

При этом достигается просто огромная скороть - время генерации страницы из кеша на сервере - сотые и тысячние доли секунды! Примерно от 1 до 30 милисекунд.

 

Какие страницы кеширует модуль?

 

Все страницы, указанные в настройках. По умолчанию там указаны страницы товаров, категорий, производилеля, информационные страницы итд. Если у вас установлены какие-то дополнительные модули, например модуль Блог, вы можете также добавить в настройки страницы этого модуля для кеширования.

Вы также можете в настройках указать параметры POST, GET, COOKIE, SESSION при которых не нужно кешировать страницу. Например GET параметр "nocache"

 

Модуль использует vQmod, но возможна установка и без vQmod

Модуль использует ionCube

 

Совместимость: 

ocStore 1.5.5.1openCart 1.5.6.4

Но модуль должен работать на всех 1.5.х версиях.Версия для 2.0 - по запросу.

 

Демо:

Замечания по демо:

  1. На демо установлен пустой OpenCart, скорость работы которого и так довольно высокая. На реальном сайте с десятками установленных модулей, десятками тысяч товаров и сотнями категорий эффект от модуля (разница между загрузкой страницы без кеша и с кешем) будет в разы больше, чем на пустом демо сайте.
  2. Если страница, которую вы загрузили не в кеше, обновите страницу - F5, чтобы увидеть разницу.

 

 

 

 

sv2109.com


Prostoy-Site | Все права защищены © 2018 | Карта сайта