Ускорение в 4 раза интернет-магазина на virtuemart 2

Опубликовано: 3 Ноябрь, 2014
Категория: Настройка VirtueMart, Расширения для VirtueMart 2
Комментариев: 61

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

В этой статье на конкретном примере я покажу как можно достаточно просто и быстро ускорить virtuemart 2.

Исходные данные

Скорость сайта будем замерять с помощью 2 сервисов:

Для анализа возьмем 2 страницы: главную и страницу категории.

Но перед измерениями немного общей информации о магазине:

  • Joomla! 2.5.27
  • Virtuemart 2.6.12
  • Категорий в магазине - 15
  • Товаров в магазине - 89
  • Хостинг - виртуальный хостинг. Помимо магазина располагается еще 6 сайтов. Стоимость - 300р/мес. Память для работы скриптов 512Мб. Для акселераторов PHP 64Мб.

Вот, что показали результаты замеров.

Главная страница

  • PageSpeed Insights - 52/100
  • Время загрузки - 3,6 сек.

Страница категории (18 товаров на странице)

  • PageSpeed Insights - 58/100
  • Время загрузки - 1,78 сек.

Сервис от Google дает конкретные рекомендации по ускорению. Поочередно разберем каждую из рекомендаций.

рекомендации по ускорению сайта от Google

 

Уменьшаем время ответа сервера с помощью расширения JotCache

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

Скачать расширение можно на сайте разработчика. Далее я буду рассматривать все настройки на примере последней стабильной версии JotCache 4.2 для Joomla 2.5.

После стандартной установки через менеджер расширений будут установлены:

  • Компонент JotCache
  • Плагин Recache
  • Плагин Crawler Extended
  • Плагин Crawler
  • Плагин JotMarker
  • Плагин JotCache

Перед настройкой отключим стандартный плагин кеширования Расширения > Менеджер плагинов > Система - Кэш и очистим все данные, сохраненные в кеше Сайт > Обслуживание > Очистить весь кеш.

Далее в менеджере плагинов активируем и настроим плагин JotCache.

настройки плагина JouCache

В поле Порядок выбираем - Самый последний.

Далее перейдем к настройкам компонента JotCache - Компоненты > JotCache. Отключим кеширование для корзины, поиска и карты сайта. Нажимаем URL Exclude.

настройка компонента JotCache

Отмечаем компоненты, которые нужно исключить из кеширования. Если вы используете для корзины компонент One Page, то его так же нужно отметить.

исключение компонентов из кеширования

Для virtuemart в поле Exclude Views & Query Parameters обязательно вписываем cart, иначе мы исключим из кеширования все страницы, связанные с virtuemart.

Чтобы исключить из кеширования конкретный модуль, например, модуль корзины в менеджере плагинов активируем JotMarker, в поле Порядок выбираем Самый первый.

JotMarker

Далее в компоненте JotCache переходим в Position Exclude и отмечаем позицию, в которой выводится модуль корзины.

настройка кеширования модулей

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

Для очистки всего кеша в настройках компонента нажимаем Delete All.

удаление кеша

JotCache - решение, дающее самый значительный прирост в скорости. Остальные методы так же важны, но значительного ускорения они не дадут.

Включаем сжатие страниц

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

Активировать qzip сжатие можно в панели управления хостингом, либо в Сайт > Общие настройки > Сервер.

qzip сжатие

Проверить работает ли сжатие на сайте можно с помощью этого сервиса. Если все хорошо, то выведется следующее сообщение.

проверка работы qzip сжатия

Оптимизируем изображения

Изображения - самые "тяжелые" элементы на странице и их оптимизация может значительно ускорить сайт. Сервис PageSpeed Insights показывает какие именно изображения можно и нужно оптимизировать.

оптимизация изображений

Google дает рекомендации по оптимизации изображений, от себя могу порекомендовать программу RIOT.

Оптимизируем загрузку скриптов

Для ускорения можно загружать скрипты асинхронно. Подробнее можно почитать здесь. Для асинхронной загрузки скриптов в Joomla можно использовать плагин JAVASCRIPT ASYNC & DEFER.

Общие рекомендации

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

Результаты

Из всех методов ускорения на демо-сайте я использовал только Jotcache и qzip сжатие. В итоге имеем.

Было Стало Прирост
Главная страница
PageSpeed Insights 52/100 68/100 1,3
Время загрузки 3,6 сек. 0,76 сек. 4,7
Страница категории
PageSpeed Insights 58/100 75/100 1,3
Время загрузки 1,78 сек. 0,68 сек. 2,6

Результаты с PageSpeed было бы значительно лучше при оптимизации изображений, но даже без нее скорость значительно выросла и сайт стал работать очень шустро.

P.S.

Делитесь своими результатами оптимизации в комментариях 🙂

61 комментарий

    Виталий

    хотелось бы поподробнее остановиться на исключении кэширования модулей- т.к. на большинстве шаблонов в силу разных непонятных причин это не работает. у автора статьи какой шаблон использовался??

    Liova

    Тема увеличения использования дискового пространства не раскрыта!
    Я нечто подобное пробовал. Сильно увеличиваеся потребное для сайта место на диске

    Дмитрий

    Спасибо огромное! Все помогло! А то БЛИН хрен дождешься загрузки...

    Алексей

    Вопрос 1. "Для virtuemart в поле Exclude Views & Query Parameters обязательно вписываем cart, иначе мы исключим из кеширования все страницы, связанные с virtuemart." - здесь именно cart нужен??? или другое значение, например у нас на сайте если находимя в корзине то ссылка такая http://medtehnikapnz.ru/glavnaya/korzina.html Сейчас при настройках как в статье, наблюдается если добавить товар в корзину а потом обновить страницу, корзина пуста!

    Вопрос 2. "Чтобы исключить из кеширования конкретный модуль, например, модуль корзины в менеджере плагинов активируем JotMarker, в поле Порядок выбираем Самый первый." - не совсем понятно, надо ли делать эти действия, если действовали по алгоритму в вопросе 1 ???

    Алексей

    Разобрался!) Как я понял, писать именно cart и второй пункт тоже обязательно надо делать) Все верно?)

      admin

      admin

      Да

    Павел

    Подскажите как быть с корзиной на AJAX Dock Cart for VirtueMart. joomla 2.5.14 Что нужно указать для не кэширования чтоб она работала?
    Спасибо и спасибо за сайт!!! многое для себя подчеркнул!!!

      admin

      admin

      Точно так же указывайте позицию в которой выводится этот модуль

        admin

        admin

        На самом деле этот метод далеко не всегда работает, чуть позже я дополню статью

    Александр

    Просто супер. Сайт просто летает.
    Время загрузки 0,4-0,7 (сек)
    Средняя скорость 150 -167 Кб/сек
    Прирост в 3 раза. Огромное спасибо!!!

      admin

      admin

      Рад, что статья оказалась полезной!

    Павел

    Результат на лицо. Спасибо.
    Вот только на главной странице количество товаров в корзине не хочет обновляться. Только если почистить кэш на сайте.
    Как исправить ?

      Дмитрий

      Павел, если вы нашли решение, поделитесь пожалуйста.

    Сергей

    Очень странно, но после установки Jot или javascript все показатели резко падали за счет роста скорости отклика сервера и рекомендации pagespeed оставались...
    vm 2.6.10

    Александр

    Ребята в плагине вирус. Сам установил, сначала обрадовался ускорением, потом началось. Дубли материалов, ссылки на другие сайты, блокирование других плагинов.

      admin

      admin

      Никакого вируса в плагине нет
      Откуда у вас такая информация?
      Вы устанавливали еще какие-то плагины?

    Алескандр

    Спасибо! Сайт ускорился.
    Можно подробнее объяснить как делать исключения.
    У меня перестал работать HTML модуль в котором вставляется php код с помощью плагина Sourcerer. Теперь код не обрабатывается, а выводится как текст.
    Модуль в той же позиции, что и корзина, которую я по инструкции исключил из кеширования. В URL Exclude еще добавил com_modules. Но модуль не заработал.

      Snake 60

      Скорее всего здесь дело не в позиции модуля, а в том, что Sourcerer должен подгружаться самым последним, чтобы выполнять свою функцию. Хотя может быть влияет и то и другое одновременно. Надо пробовать экспериментально 🙂

    Александр

    Я все своими глазами видел. Установил, через 2 дня появились дублирование моих материалов, с ели заметной ссылкой на потусторонний сайт. Кроме того некорректно стал работать VMCustom - Easycheckbox (приобретал у Вас). Удалил JotCache 4.2, вернулось все на место.

      admin

      admin

      Никаких вирусов не замечал
      С VMCustom — Easycheckbox возникли проблемы, потому что он обновляет динамически данные на странице
      Вообще со всеми данными, которые обновляются динамически при кешировании возникают проблемы

    Мирослав

    Установил настроил все работает и дает толк. У меня для увеличения картинок в карточке товара используется модуль Magic Zoom Plus. Так вот он работает нормально при заходе на страничку товара из сайта. При этом сам модуль я переместил в некешируемую позицию. Если же заход был из поисковика, то включается стандартный модуль отображения картинок Virtuemart вместо этого. В таком виде страничка попадает в кеш. Помогите решить!

    Дмитрий

    Объясните, как пользоваться JAVASCRIPT ASYNC & DEFER

      Дмитрий

      +

      Alexandr

      +

    denism300

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

    Дмитрий

    Здраствуйте! Помогите решить проблему, у меня кеширует страницы и потом выводит вместо текста - крякозябры. Как исправить?

      admin

      admin

      Здравствуйте!

      Сайт > Общие настройки > Сайт
      Включите опцию Перенаправление URL
      После этого в корневой папке сайта в файле .htaccess добавьте

    Павел

    Все очень здорово НО!!! при включенном расширении постоянно слетает меню на Nextend Accordion Menu V9 хотя позицию в которой он выводится я из кэширования исключил!!! Помогите плиз!

    Александр

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

      admin

      admin

      В настройках модуля пробовали отключать кеширование?

    Alexandr

    Большое спасибо за эту статью, почерпнул кое что новое. До этого, сам настраивал у себя JotCache но с "исключениями" не разобрался, в результате чего испытывал некоторые сложности.

    Вагиф

    Спасибо! После установки JotCache сайт сильно ускорился. Рекомендую использовать плагин NoNumber CacheCleaner для оперативной очистки кэша после внесения изменений. Работает прямо из админки. Как допрлнительные средства для ускорения и оптимизации могу рекомендовать JCH Optimizer и PHP акселлератор APC.

      admin

      admin

      Спасибо за дополнение!

    sanugol@mail.ru

    Доброго дня.

    Для тех у кого не работает исключение позиций в JotCache, можно обернуть позицию в коде тегом .

    Например для исключения правой колонки из кэша меняем -

    на строчку

    Правда работает не со всеми позициями!!!

      admin

      admin

      Спасибо, что поделились!

    sanugol@mail.ru

    Можно ли как то ограничить размер кэша в JotCache? На сайте VM 9000 позиций, кэш за сутки набирает вес 5GB! Сколько он вообще может весить?

      admin

      admin

      Как вариант, можно уменьшить время хранения кеша в настройках

    Дмитрий

    Здравствуйте!
    Не кто не встречался с проблемой когда меняешь валюту на сайте ?

    Например прошелся по товарам, категориями, потом поменял валюту и вернувшись там где был, валюта была как в начале ??
    Это реальная проблема.
    Подскажите, кто знает.
    Спасибо.

      admin

      admin

      Попробуйте почистить кеш, если включено кеширование

    Сергей

    < Общие настройки > Сайт
    Включите опцию Перенаправление URL
    После этого в корневой папке сайта в файле .htaccess добавьте

    1
    AddDefaultCharset UTF-8>>

    Попробовал, не помогает

    Алексей

    А что важнее время генерации страницы или общее время загрузки? ставлю жоткэш загрузка 13.06с, генерация 262мс. Без жоткэша загрузка 5.7с, генерация 767мс.

    Алексей

    Проверял через http://sitespeed.ru, а через http://pr-cy.ru/speed_test/ тоже после установки повышается скорость загрузки. Но не так критично. Но все же...

      admin

      admin

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

    Богдан

    Спасибо, очень хорошо помогло, использовал Кэш и Сжатие, завтра картинками займусь).

      admin

      admin

      Рад, что статья оказалась полезной.

    denis2015

    Актуально ли использование JotCache в третьем вирте? На форуме Вы писали что не рекомендуете использовать JotCache, т.к. виртуемарт сам неплохо кэширует.
    И если не JotCache, то что еще можете посоветовать?

    Евграш

    Приветствую !
    1) Правильно ли я понял, что если у меня 3 000 ссылок мне нужно сначала их кликнуть, чтобы они попали в кеш Jot для того чтобы потом открывалось быстрее? В таком случае ссылки которые открываются первый раз загружаются гораздо дольше(видимо генерируя ссылку для JOT), а постоянно кликать 3 000 раз не очень интересно, ведь пользователи очень часто чистят кеш когда меняют цены например, а цены меняют очень часто в нынешнее время. Как быть может он как то сам может делать обход ссылок не кликая их самостоятельно или пользователем?

    2) Тут уже задавали вопрос по поводу ссылок абракадабры , может у меня другая проблема в самой админке в компоненте JotCache ссылки которые попали в кеш имеют вид (???????????????????) если русские буквы
    естественно .htaccess AddDefaultCharset UTF-8 не варик. Что то нужно в самом компоненте юзать. конечно это не так критично, но хотелось бы видеть ссылки попавшие в кеш Jot.

      admin

      admin

      Здравствуйте!

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

      2. Не встречался, подсказать не смогу.

        Евграш

        Но ведь там есть кнопка Recache Control
        Установил на joomla 3.4.5 JotCache 5.2.0 [NEW]
        там конечно не интернет магазин, но нажав кнопку Recache Control потом Start все работает и обходит все ссылки на сайте, но на моем сайте с Virtom на Joomla 2.5 после нажатия Recache Items / start, выдает
        (ATTENTION!
        Recache run stopped due to unsufficient value of Recache Run Timeout (JotCache component parameter set in Options). )

        в настройках конечно я учел Run Timeout и хостинг у меня позволяет.
        Скажите у всех Recache не работает ? может ссылок много?

        Единственное что нашел в об этом в нете http://kbase.jotcomponents.net/jotcache:help:v40:recache_use

        Евграш

        Кстати ссылки в Joomla 3.4.5 попавшие в кеш компонента Jot точно так же выглядят ????????????????????????????????????????1263
        Помню ставил еще на joomla 1.5 такаяже хрень была странно , что у вас не так.

        Евграш

        Кстати если товар в разной валюте как у меня например, то вообще этот компонент не варик, ведь курс меняется каждый день, а в кеше сидит совсем другая цена и очередной модератор от яндекс маркета ХЛОП ТЕБЕ ОШИБКУ. Вобщем это очень не удобно думаю многие с магазинами все равно отказываются от данного варианта ускорения сайта.

    саша

    скачал компонент с официального сайта... захожу а вдминку и мне выдет ошибку
    Fatal error: Class 'Joomla\String\StringHelper' not found in /home/tdfarfor/tdfarfor.nichost.ru/docs/administrator/components/com_jotcache/models/main.php on line 76

    не подскажете в чем проблема7

      admin

      admin

      Возможно, дело в версии php на хостинге, попробуйте поставить php 5.4 или выше.
      Возможно, последняя версия компонента не совместима с версией joomla, попробуйте обновить ее.

    Александр

    Спасибо за полезную статью. Скажите пожалуйста, а как Вы оцениваете компонент WEBO Site SpeedUp ? Там есть профессиональная версия, дорого, но вполне можно себе позволить ради такого важного дела. Так вот - стоит ли от него ожидать намного более серьезного результата? Был ли у вас опыт использования данного компонента?
    Вот тут есть подробные характеристики расширенной версии:
    https://www.webogroup.com/ru/home/site-speedup/complete-comparison/

      admin

      admin

      С WEBO Site SpeedUp не работал, но насколько я знаю, существуют отдельные плагины, которые могут объединять и минимизировать css и js файлы.

    Владимир

    Приветствую! В версии VM3.0.14 начались проблемы с кешированием модуля корзины на главной странице. Использую JotCashe. С главной кладу 1 товар в корзину (пока все нормально), перехожу на любую другую страницу сайта, снова кладу (другой товар) в корзину (уже отображается 2 товара в корзине). После этого перехожу на главную и индикатор количества товаров в корзине не фиксирует ни одного товара. Тут же перехожу на любую другую страницу - там показывает как нужно - 2 товара. Если JotCashe отключить то все работает нормально. Модуль cart в JotCashe прописан как исключение. JotMarker поставлен на позицию Самый первый (хотя там самых первых еще дюжина), сам JotCashe на позиции Самый последний. В предыдущей версии VM всё вроде работало, по крайней мере, не замечал этой проблемы. Как быть?

      Владимир

      Вопрос снят. Помогло обновление JotCashe

    Саша

    А можно сделать чтобы кеш самоочищался в компоненте через какое то время?

      admin

      admin

      Задать можно в Компоненты > JotCache > Настройки > Базовые
      опция Время жизни кэша браузера
      русификатор для JotCache можно скачать здесь

    Сергей

    Подскажите, не вижу CART вот в этом пункте

    "Далее в компоненте JotCache переходим в Position Exclude и отмечаем позицию, в которой выводится модуль корзины."

    в смысле у меня не видно((

      admin

      admin

      Посмотрите в JotCache > Exclude Location, там должны выводиться все позиции модулей.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
Для вставки кода заключите его в теги [php] [/php]
*