Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

блог для натуралов

  • записів
    9
  • коментарів
    60
  • переглядів
    8 649

исчерпываем вопрос о кэше


kJlukOo

1 700 переглядів

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

штатный кэш опенкарта

1. ocmod

обновляется в админке. меню слева - расширения - модификаторы.

обновить можно следующим образом

Screenshot_1.png.7f7fe02e6c4f33edfd8fc9bc91fa3d5f.png

 

рекомендации:

  • когда сайту плохо и вы получаете 404 можно сделать очистку всех модификаторов - нажав на желтую кнопку с ластиком, чтобы убедиться, что дело не в них
  • в бд в таблице oc_modification колонка xml легко поддается поиску через интерфейс phpMyAdmin
  • перед работой с сайтом желательно сохранить все модифицированный файлы - storage/modification

 

2. twig and sass cache (3.x)

opencart и ocstore 3 ветки обзавелся twig шаблонизатором, который умеет кэшироваться

настраивается это в админке. в левом меню пункт панель состояния

Screenshot_2.png.fa15db708965166bc1663c08a3b7e74e.png

Screenshot_3.png.dff07c8743d3b1f9b6e57b043d849195.png

 

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

 

3. opencart file/mem cache

 

библиотека для разработчиков. которая используется так

$this->cache->set('test','value');
$val = $this->cache->get('test');

содержимое кэша по умолчанию находится в system/storage/cache

для файлового кэша очищается посредством удаления содержимого папки

для мемкэша очищается вызовом пары команд в консоле. это легко гуглится

в этот хранилище обычно кэшируется языки, валюты и меню сайта

 

рекомендации: можно кэшировать любой статический контент сайта, например футер или блок преимуществ

по возможности используйте мемкэш или редис, если вы используете файловый кэш - ssd и m.2 в помощь

 

4. image cache

опенкарт создает кэш изображений под размеры указанные в настройках темы

этот кэш находится в image/cache. чтобы очистить - удалите содержимое этой папки

 

рекомендации: не избыточное разрешение, webp и отложенная загрузка изображений. ну и верный Cache-control для изображений от сервера

 

5. design/theme (3.x)

этот инструмент кэширует представления(view) в бд

находится в левом меню. дизайн - редактор шаблона

на скрине ниже можно увидеть, что файл account/account закэширован

изменение этого файла на сервере не даст ожидаемого результата

Screenshot_4.thumb.png.31b5e7abe1cbbf1d26e7e1a57fc80ea5.png

 

рекомендации: желательно не использовать вовсе

 

6. внештатные дополнения для кэширования

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

 

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

 

клиентский кэш

это кэш вашего браузера. заголовок ответа сервера Cache-control является инструкцией для браузера

пример блока из конфига для nginx, который отдаст инструкцию браузеру к кэшированию js, css, jpeg на 72 часа

location ~* \.(css|js|gif|jpeg|jpg|png)$ {
       expires 3d;
       access_log off;
       add_header Pragma public;
       add_header Cache-Control "public, max-age=259200";
       add_header X-Asset "yes";
   }

 

этот кэш отключается следующим образом для google chrome:

1. нажатие хоткея CTRL + F5 приведет к перезагрузке страницы со сбросом кэша

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

Спойлер

1. жмем F12 - открытие панели разработчика

2. затем в появившемся окне ищем вкладку network. нажимаем на нее

3. ставим галочку возле disable cache

4. жмем F12 чтобы закрыть панель разработчика

Screenshot_5.png.fa9388816bdbaf955576a5fd376100fb.png

 

поправляйте если где-то ошибаюсь :)

Screenshot_6.png.9ec650efa2b509d800d1951f910e1e73.png

  • +1 8

11 коментарів


Recommended Comments

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

К примеру такой:

/system/storage/cache/cache.catalog.language.1707092246



Я проверил во всех файлах

$this->cache->delete($key);

Предположив что в каком-то файле происходит сброс.
Но ничего не нашёл.

Возможно OpenCart очищает кэш при определённых событиях, но при каких и зачем?


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

Змінено користувачем fortoonas
Надіслати
12.08.2024 в 23:06, fortoonas сказал:

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

К примеру такой:

/system/storage/cache/cache.catalog.language.1707092246



Я проверил во всех файлах

$this->cache->delete($key);

Предположив что в каком-то файле происходит сброс.
Но ничего не нашёл.

Возможно OpenCart очищает кэш при определённых событиях, но при каких и зачем?


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

у кеша по умолчанию время жизни - один час. смотрите тут system\config\default.php

у кеша изображений хз

  • +1 1
Надіслати
13.08.2024 в 08:25, kJlukOo сказал:

смотрите тут system\config\default.php

$_['cache_expire']         = 3600;


Спасибо за подсказку!)
Это в ОС-3, а где в ОС-2?

попробую время оставить пустым, чтобы не сбрасывало

 

13.08.2024 в 08:25, kJlukOo сказал:

у кеша по умолчанию время жизни - один час

Непонятно зачем разработчики ОС задали время жизни?
Получается что каждый час сайт нагружается для создание нового кеша, хотя можно просто сбросить кеш кнопкой (если будет необходимо) и у каждого 100го посетителя, сайт подвисает пока создаётся кеш))

 

Надіслати
13.08.2024 в 11:47, fortoonas сказал:


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

 

Не плутайте файловий кеш (він миттєво генерується після першого ж заходу бота чи користувача) та створення ресайзів зображень (це не кеш!). Ось на створення ресайзів... так, витрачається багато ресурсів сервера

  • +1 1
Надіслати
13.08.2024 в 12:13, fortoonas сказал:

А какой Class, function или event сбрасывает?

Ресайзи зображень? Ніякий в стандартному виконанні. То вже в вас якісь костилі видаляють ресайзи

Надіслати
13.08.2024 в 12:14, markimax сказал:

То вже в вас якісь костилі видаляють ресайзи

Согласен, ресайз картинок какой-то костыль (нужно искать в коде)

Но выше спрашивал о системном кеше
 

13.08.2024 в 12:13, fortoonas сказал:

А какой Class, function или event сбрасывает?

 

Надіслати
13.08.2024 в 11:47, fortoonas сказал:

а где в ОС-2?

уточнение вопроса

 

13.08.2024 в 08:25, kJlukOo сказал:

смотрите тут system\config\default.php

Это для OC-3 и OC-2.3
А в каком файле (Class, function или event) сбрасывается в OC-2.1 ?

Надіслати
13.08.2024 в 12:13, fortoonas сказал:

А какой Class, function или event сбрасывает?

Сбрасывает конструктор класса Cache\File. Если обратите внимание, в конце каждого закешированного файла стоит дата окончания срока жизни файла в формате time, при каждом вызове класса, он проверяет файлы с истекшим сроком и удаляет их. 

Надіслати

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.