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

Опубликовано: 01.09.2018

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

Clearing Cache on Opencart 2.3+

Приветствую вас, коллеги!

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


Очистка кэша в Opencart 2

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

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


Очистка кеша на OpenCart2

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

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

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

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

Поехали

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

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

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

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

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

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

Давайте представим такую ситуацию: вы разрабатываете свой модуль 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, чем удаление файлов вручную. Для этого нужно зайти в админку магазина и перейти в пункт меню «Дополнения (в виде кусочка паззла) — Модификации».

Здесь нас будет интересовать оранжевая кнопка с изображением ластика, при нажатии на которую, кэш 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 очистить кэш вручную, а также как можно автоматизировать данный процесс с помощью специальных решений.

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

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

rss