Как в OpenCart очистить кэш? Инструкция для всех версий OpenCart

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

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

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

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

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

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

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

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

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

Хочу отметить, что инструкции, приведённые в данной статье, актуальны для всех версий OpenCart: 1.*, 2.* и 3.*. Если рекомендации будут справедливы только для какой-то определённой версии, в тексте об этом будет сказано.

Поехали 🙂

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

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

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

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

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

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

http://cccp-blog.com/wp-includes/images/banners/templatemonster/banner_content.jpg

Либо вы, как администратор сайта, часами выбирали OpenCart модуль, заплатили за него крупную сумму, прочитали инструкцию по установке, прошли 7 кругов ада его инсталляции и активации, а изменений на сайте нет. Пишите разработчику, а тот через неделю наконец читает ваше письмо и говорит, что с модулем всё в порядке… Знакомо? 🙂 Но вы программисту не верите и покрываете его матом, хотя он правда был не виноват.

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

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

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

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

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

Типы кэша данных в OpenCart

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

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

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

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

Серверный кэш OpenCart состоит из нескольких типов:

  • кэш модификаций;
  • системный кэш;
  • кэш изображений.

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

Кэш модификаций OpenCart

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

Это, нужно сказать, достаточно удобно, т.к. позволяет устанавливать и отключать модули без копаний в коде движка и уж тем более не перезаписывая изменения других разработчиков. Хотя не всем разработчикам данный подход по душе, из-за чего VQmod/ocMod часто называют «костылём» 🙂

Работа OpenCart модификаций становится возможной благодаря специальной технологии VQmod для OpenCart 1.5 и OCmod для OpenCart 2 и 3. Более подробно о принципах работы каждой и способах их установки вы можете прочитать в данной статье.

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

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

Кэш VQmod дополнений

Кэшируемые VQmod данные хранятся в виде отдельных файлов в формате «vq2-*.php» в директории vqmod/vqcache, а также mods.cache и checked.cahce внутри «vqmod» каталога (если VQmod, естественно, у вас установлен).

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

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

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

Для этого заходим в «корень_сайта/vqmod» и удаляем для начала файлы mods.cache и checked.cache. Если какого-то из них не будет — не расстраивайтесь, вам просто будет меньше работы 🙂 Потом заходим в каталог «vqcache» и удаляем все файлы.

Более наглядно чистка кэша OpenCart данного вида представлена на следующем видео:

Для тех, кто боится удалять файлы сайта на хостинге — не волнуйтесь 🙂 Они создадутся вновь, но уже с обновлённой информацией, т.е. кэш модификаций OpenCart обновится.

Кэш ocMod модификаций

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

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

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

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

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

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

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

ochistka-ocmod-kehsha-sajta-na-opencart

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

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

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

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

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

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

Закэшированные данные хранятся в директории system/cache для OpenCart 1.5 и 2.0.* и system/storage/cacheдля OpenCart 2.1+ и 3. Внутри вы можете найти файлы с именами в формате cache.object(.id).time() + 3600 для OpenCart 1.5 и 2.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автоматический сброс кэша OpenCart

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

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

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

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

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

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

ACCLeaner для очистки кэша OpenCart 1.5 и ocStore 1.5
ACCLeaner для очистки кэша OpenCart 2 и ocStore 2
ACCLeaner для очистки кэша OpenCart 3 и ocStore 3

Как уже отмечалось выше, главной особенностью данного модуля является то, что он позволяет очистить кэш OpenCart 1.5, 2 и 3 автоматически при отключении или удалении модификаций и дополнений, чтобы удалить их закэшированные данные. Это действие, как уже было сказано, позволит освободить дисковое пространство на хостинге (особенно это актуально для shared хостинга, где от размер диска ограничивается тарифным планом) и уменьшить время ответа от сервера.

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

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

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

Модуль очищает системный кэш и кэш картинок для всех версий OpenCart и кэш VQmod модификаций для OpenCart 1.5. Для OpenCart 2 и 3 я решил не реализовывать очистку кэша модификаций, т.к. данный инструмент уже есть в админке.

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

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

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

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

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

P.S.: если вам нужен сайт либо необходимо внести правки на существующий, но для этого нет времени и желания, могу предложить свои услуги.

Более 5 лет опыта профессиональной разработки сайтов. Работа с PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, React, Angular и другими технологиями web-разработки.

Опыт разработки проектов различного уровня: лендинги, корпоративные сайты, Интернет-магазины, CRM, порталы. В том числе поддержка и разработка HighLoad проектов. Присылайте ваши заявки на email cccpblogcom@gmail.com.

И с друзьями не забудьте поделиться 😉

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

Похожие темы

15 комментариев к статье "Как в OpenCart очистить кэш? Инструкция для всех версий 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 не будет опубликован. Обязательные поля помечены *