Как в OpenCart очистить кэш?

Дата публикации: 22.04.2016

kak-v-opencart-ochistit-kehshПриветствую вас, коллеги!

Мы продолжаем рассматривать один из лучших бесплатных движков для Интернет-магазина на сегодняшний день – OpenCart.

На данном блоге вы можете найти описание каждого этапа создания сайта на CMS для данного движка: его установку, как правильно выбирать и инсталлировать модули и шаблоны.

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

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

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

И сегодня мы поговорим об одной из них, а именно о том, как можно в OpenCart очистить кэш.

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

Поехали 🙂

Зачем очищать кэш OpenCart?

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

Для тех, кто не любит читать, могу порекомендовать к просмотру следующее видео:

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

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

Зачем же тогда вообще очищать кэш OpenCart, если это нам не выгодно?

http://cccp-blog.com/wp-includes/images/banners/templatemonster/banner_content_new.png

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

Или давайте рассмотрим совсем бытовую ситуацию: вы добавили товару картинку, посмотрели на неё и подумали, что неплохо бы уменьшить её размер. Зашли в графический редактор, внесли правки, сохранили под тем же именем, загружаете на сайт – а после перезагрузки вы видите старую…

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

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

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

Но, как по мне, делать целенаправленный clear cache OpenCart ради этой цели – не более, чем бред 🙂

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

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

Вывод — экономить место на хостинге нужно другими способами 🙂

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

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

Особенности кэша OpenCart

Начнём с того, что рассмотрим, на каких уровнях осуществляется кэширование в OpenCart.

В статье о кэше сайта я вам уже рассказывал, что кэширование данных происходит на серверном и клиентском уровнях. Клиентская часть для всех ресурсов одинакова – данные кэшируются веб-клиентами (Интернет-браузерами) на компьютерах ваших пользователей.

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

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

Библиотека курсов

Серверный кэш OpenCart состоит из нескольких типов. Несколько слов об особенностях каждого.

Кэш VQMod

Если вы до сих пор не знаете, что это такое и зачем он нужен, настоятельно рекомендую вам ознакомиться со статьёй, посвящённой VQMod.

Данный кэш представлен отдельными файлами в формате «vq2-*.php» и mods.cache, в которых хранится код исходных файлов движка, дополненный измененями, внесёнными с помощью данной технологии (сами разработчики ласково называют её «костыль») 🙂

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

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

Как же в OpenCart очистить кэш VQMod?

Для этого заходим в «корень_сайта/vqmod» и удаляем для начала файл mods.cache. Потом заходим в каталог «cache» и удаляем все файлы.

Более наглядно clear cache OpenCart данного вида представлена на следующем видео:

По поводу удаления не волнуйтесь – эти файлы создадутся вновь, но уже с обновлённой информацией.

Кэш OCMod

OCMod — это «младший брат» VQMod, который является встроенным решением (его не нужно устанавливать дополнительно) в OpenCart, начиная с версии 2.0.0.0. Более подробно об OCMod вы можете прочитать в статье, посвящённой VQMod, ссылка на которую размещена выше.

Одним из ключевых отличий данных инструментов является то, что информация о модификациях, которые производятся в файлах OCMod, хранится в базе данных сайта. Но при этом кэш модификаций, как и в случае VQMod, хранится в файлах.

Данные файлы расположены в каталоге «корень_сайта/system/modification» и они рассортированы по каталогам, структура которых повторяет файловую структуру OpenCart. Также они имеют такие же имена, как и оригинальные файлы движка.

Всё это на руку разработчикам, потому что поиск необходимого файла кэша максимально упрощён.

Причины очистки кэша OCMod и способы будут аналогичны VQMod.

Для того, чтобы в OpenCart почистить кэш OCMod, необходимо удалить все каталоги и файлы из «корень_сайта/system/modification».

Но в OpenCart 2+ разработчики сделали более удобный способ очистки кэша OCMod, чем удаление файлов вручную. Для этого нужно зайти в админку магазина и перейти в пункт меню «Дополнения (в виде кусочка паззла) — Модификации».

ochistka-ocmod-kehsha-sajta-na-opencart

Здесь нас будет интересовать оранжевая кнопка с изображением ластика, при нажатии на которую, кэш OCMod очистится автоматически. Далее для перестройки кэша модификаций необходимо нажать на кнопку «Обновить», которая расположена рядом.

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

За это их и не любят ни разработчики, ни пользователи.

Системный кэш OpenCart

Данный тип кэша OpenCart содержит результаты запросов в БД, обработки данных и прочих процессов. Это зависит от желания разработчиков, которые указывают в коде своих дополнений, какие данные нужно заносить в кэш.

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

Закэшированные данные хранятся в виде отдельных файлов с именами в формате «cache.object(.id).time() + 3600».

В данной строке

  • object – тип объекта, который кэшируется — задаётся в коде произвольно, главное, чтобы не дублировало существующее название;
  • id – идентификатор объекта — не является обязательным параметром, используется в случаях, когда файлы кэша создаются для разных объектов одного типа;
  • time() – результат выполнения системной функции time() — текущее время + 3600 с. (1 час – время существования кэша, его также можно изменить)

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

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

Для того, чтобы очистить кэш OpenCart в данном случае, необходимо удалить все файлы из каталога «system/cache» (путь актуален для всех версий OpenCart).

Если вы испытали какие-то трудности при очистке кэша OpenCart данного типа или у вас возникли какие-то вопросы по этому поводу, то рекомендую вам к просмотру следующее видео:

При повторном выполнении запросов в БД и операций с данными, файлы кэша пересоздадутся.

Кэш изображений в OpenCart

О данном типе кэша OpenCart я решил поговорить в последнюю очередь, т.к. он довольно специфичен.

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

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

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

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

Если поговорить об освобождении дискового пространства за счёт очистки кэша изображений OpenCart, то, пожалуй, это единственный случай, когда очистка кэша может принести ощутимую пользу, т.к. файлы изображений имеют бОльший размер, чем файлы системного кэша и VQMod/OCMod.

Поэтому при значительном количестве товаров и дополнений с графической частью (модули, шаблоны) данный кэш OpenCart может иметь довольно внушительный размер.

Для того, чтобы очистить кэш изображений в OpenCart, вам потребуется удалить все каталоги и файлы из папки «корень_сайта/image/cache», либо же избавиться от необходимых миниатюр (например, при удалении товара).

Типы кэша OpenCart мы рассмотрели.

Как вы успели понять, в каждом рассмотренном случае очистить кэш OpenCart можно вручную. Но кому же из нас не хочется автоматизировать этот процесс? Тем более, что это возможно 🙂

Давайте рассмотрим, как же это можно сделать.

Автоматическая очистка кэша OpenCart

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

К тому же, среди них лично я не нашёл такого, которое способно автоматически очищать кэш при каких-то действиях, хотя его существование и предполагалось 🙂

Отдельно хочется выделить продукты, которые позволяют делать в OpenCart кэширование с помощью Memcached, т.к. данное ПО широко используется на различных highload-проектах, что подтверждает его эффективность.

Но, к сожалению, данные решения стоят относительно дорого и в большинстве не оправдываются, т.к., как известно, OpenCart – отличное решение для небольших и средних магазинов, но никак не для высоконагруженных, к тому же кэшироваться будут преимущественно результаты запросов в БД.

Таким образом, данные решения представляют отличную альтернативу системному кэшу OpenCart. Но с кэшом VQMod, OCMod и картинок он справиться не поможет.

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

Остальная часть рассмотренных мною модулей, несмотря на различный функционал и реализацию, – от кнопки «Очистить» до продуктов с множеством настроек – сводилась к очистке кэша OpenCart на различных уровнях. Причём везде она происходит вручную, благодаря манипуляциям в админке.

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

Для этого я разработал простенький модуль очистки кэша OpenCart AutoCacheCleaner (ACCleaner), который будет производить очистку кэша OpenCart на всех уровнях (VQMod, системный, кэш изображений) при удалении установленных решений через админку.

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

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

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

Вот и всё, что я хотел вам сегодня поведать, друзья 🙂 Мы с вами рассмотрели разновидности кэша OpenCart и познакомились с их назначением и ключевыми особенностями.

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

Оставляйте свои мнения в комментариях, ставьте оценки и рассказывайте о ней своим друзьям в социальных сетях. Мне это будет очень приятно 🙂

На этом всё! Всем удачи и до новых встреч! 🙂

P.S.: если вам нужен сайт, но нет времени самостоятельно его разрабатывать, могу порекомендовать вам своего проверенного партнёра - вебстудию Дениса Нихаева. Было не просто, но я всё-таки выбил для вас скидку 20%, что составит до 20 тысяч рублей в зависимости от выбираемого тарифа 🙂 Вот промо код - CCCP. При заказе сообщите его и скидка вам гарантирована! Друзьям тоже можете рассказать 😉

Понравилась статья? Поделись с друзьями:
  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
13 голосов, в среднем: 4.7 из 5

Похожие темы

15 комментариев к статье "Как в OpenCart очистить кэш?"

  1. Денис

    Здравствуйте! Я до недавнего времени не имел дела с OpenCart, но меня попросили сделать изменения на одном сайте. Часть изменений я внёс, но в это время хозяин сайта установил новый модуль и уже по понятным мне причинам, новые мои редактирования файлов не давали желаемый результат, т.к. обращение шло не к «родным» файлам, а файлам расположенным в «/system/modification». В связи с этим у меня вопрос. Что делать (или не делать) с этими файлами и куда вносить мои дальнейшие правки, так чтобы и установленный модуль остался рабочий, и мой код выполнялся? Мне придётся работать с файлами в «/system/modification» или я могу файлы из этой директории просто удалить, или же их нужно переместить по соответствующим директориям с заменой существующих? В общем, не хочется сделать какую-то глупую ошибку, поэтому прошу меня вкратце просветить. Спасибо.

    1. Pashaster Автор

      Для начала, какой версией OpenCart вы пользуетесь? И какие типы модулей? VQMod, OCMod, отдельные файлы?

  2. Денис

    Используется ocStore 2.1.0.1.1. Файлы перебросились в вышеуказанную директорию, после установки модуля доставки «Новая Почта». Модуль устанавливался через OCMOD.

    1. Pashaster Автор

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

  3. Андрей

    OpenCart 2.2.0
    VQMod не установлен.
    У меня нету такого рода кэша:
    «корень_сайта/system/modification»
    «корень_сайта/system/cache»
    то есть нету папок modification и cache.
    За то есть
    system/library/cache/
    system/storage/cache/
    что это за кэш?
    Какой его функционал?

    1. Pashaster Автор

      Да… Смотрю разработчики OpenCart в новой версии решили переделать даже файловую структуру. Нужно будет почитать о новшествах на досуге более детально 🙂

      По поводу Вашего вопроса — в system/library/cache/ в OpenCart 2.2, равно как и в предыдущих версиях, хранятся системные библиотеки кэширования данных, их удалять нельзя категорически! А вот в system/storage/cache/, судя по всему, разработчики решили размещать файлы системного кэша. Так что если нужно будет очистить системный кэш OpenCart, то нужно будет удалять файлы из этого каталога.

  4. Ngreen

    Здравствуйте! Скажите, можно ли ставить VQMod на Opencart 2.0? Где-то читал, что они не совместимы и могут быть проблемы с настройками seopro и всех остальных фишек при продвижении сайта.

    1. Pashaster Автор

      Добрый день!

      Ставить VQMod на OC2+, конечно, нежелательно, ввиду использования движком новой системы модификаций OCMod.

      Но если очень уж нужно из-за каких-то модулей, которые создатели поленились адаптировать под OCMod, то для бесконфликтной работы VQMod и OCMod устанавливайте VQMod версией не ниже 2.5 (лучше, конечно, самую последнюю 2.6.1).

      Либо можно установить какую-либо из сборок на базе VQMod, о которых Вы можете прочитать здесь — http://cccp-blog.com/opencart/vqmod-obzor-tekhnologii

      Удачи!

  5. Андрей

    Респект, бро! Думал не разберусь с этим кешем, догадывался ч то в vqmod дело, но что это за директория не понял.

    Сэкономил часы времени на поиск проблемы в неправильных направлениях!

    Даже не жалко теперь время тратить на этот камент.

    Памятник автору!

  6. Никита

    Подскажите, как очистить Memcached?
    Настроил по инструкции https://opencartforum.com/topic/2080-memcache-support/, кэширование работает отлично. Но спустя пару месяцев возникла необходимость очистить кэш, и с этим вообще не понятно как быть.

    1. Pashaster Автор

      Добрый день!

      Поскольку при кэшировании данных с помощью Memcached информация храниться в оперативной памяти сервера, то очистить кэш Memcached в OpenCart, как и на других платформах, невозможно путём простого удаления файлов из каких-то папок, как это происходит в случае других типов кэша (изображений, системный, VQMod и т.д.).

      Поэтому кэш Memcached нужно очищать путём запросов на сервер из кода. Не знаю, как устроен модуль, который Вы использовали, и имеет ли он какое-то API для стандартных операций с кэшом (для этого нужно инспектить код модуля и искать методы flush, clear или delete). Если найдёте подходящий, то нужно будет его вызвать либо где-то в коде, либо через REST API (через url).

      Если никакого API модуль не предоставляет, то попробуйте взаимодействовать с memcached напрямую путём вызова метода Memcached::flush.

  7. vinyardrip

    Добрый день! Не подскажете как очистить кэш и какой в opencart 1.5.5.1 для того, чтобы редирект 301 начал работать?

    1. Pashaster Автор

      Здравствуйте! По поводу способов очистки различных типов кэша (системный, картинок, vqMod и т.д.) ещё раз внимательно перечитайте статью и комментарии — все эти вопросы здесь подробно рассмотрены. По поводу 301 редиректа — не уверен, что он может не работать по вине кэша OpenCart. Причиной может быть кэш поисковиков (Google, Yandex), но очистить его вы никак не сможете, останется только подождать)

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

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