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

Чистка кеша изображений


Recommended Posts

Подскажите:
1. Файлы изображений в кеше по пути: /image/cache/catalog/ удаляются сами через какое то время или с момента создания файла он там постоянно хранится пока не удалить вручную?
2. Если я заменю картинку в товаре, то картинка в кеше сама обновится или нет, если да то через какое время?

Надіслати
Поділитися на інших сайтах


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

14 минут назад, boooeller2 сказал:

2. Если я заменю картинку в товаре, то картинка в кеше сама обновится или нет, если да то через какое время?

 

при неизменном названии файла, это имеется ввиду?

зависит от версии опенкарт и операционной системы.

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

 

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

по-хорошему она должна обновиться сразу как только вы откроете соответствующую страницу с этой картинкой. Но в реальности все не так хорошо (см. выше) бывает.

 

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

 

 

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

И не забывайте также обновить кеш браузера при просмотре, например, так: ctrl+F5.

 

Надіслати
Поділитися на інших сайтах

Для ocStore 2.3.0.2.3 

1 час назад, boooeller2 сказал:

Подскажите:
1. Файлы изображений в кеше по пути: /image/cache/catalog/ удаляются сами через какое то время или с момента создания файла он там постоянно хранится пока не удалить вручную?

Сами не удаляются, но могут быть перегенерированы по 2м условиям.

1. Если файла соответствующей миниатюры в кеше нет.

2. Если время изменения оригинального файла , который Вы загрузили больше, чем время изменения файла кеша.

Из функции ресайза resize  картинки (файл : catalog\model\tool\image.php)

Спойлер

if (!is_file(DIR_IMAGE . $image_new) || (filectime(DIR_IMAGE . $image_old) > filectime(DIR_IMAGE . $image_new))) {

 

 

1 час назад, boooeller2 сказал:

Подскажите:
2. Если я заменю картинку в товаре, то картинка в кеше сама обновится или нет, если да то через какое время?

Да, при открытии  страницы, должны перегенерироваться миниатюры при соблюдении условий (см. выше).

Надіслати
Поділитися на інших сайтах


1 час назад, searchingman сказал:

2. Если время изменения оригинального файла , который Вы загрузили больше, чем время изменения файла кеша.

 

так должно было бы работать по логике вещей. Но...

это не всегда так  если речь об относительно старых версиях опенкарт, вплоть до 2.3 включительно.

Т.е. нормального поведения вы не всегда дождетесь.

в новой внесли исправление, ошибка ранее тянулась из поколения в поколение.

 

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

 

я уже ранее писал на эту тему. Только в 3-ке исправили ошибку.

// +++++++++++++++++++++++++++++ комментарий от sitecreator +++++++++++++++++++++++++++++++++++++
// Для контроля времени создания файлов
// используем везде filemtime() (Возвращает время последнего изменения файла)
// использование filectime() не годится, т.к. в случае изменения файла время изменения меняется, но filectime() будет возвращать
// "время создания файла" (в кавычках потому, что в Linux не существует такого понятия), точнее -
// возвращает время изменения индексного дескриптора файла, что обычно совпадает с временем создания файла на сервере

// https://www.php.net/manual/ru/function.filectime.php
// Примечание. На большинстве платформ Unix, файл считается измененным, если изменены данные его индексного дескриптора,
// что включает информацию о правах на файл, о его владельце, группе и другие метаданные, содержащиеся в индексном дескрипторе.

// даже при полном изменении (перезаписывании или удалении) файла filectime() возвратит точно такое же значение как до изменения файла
// если не менялись данные его индексного дескриптора
// filectime() - это именно время изменения индексного дескриптора, но не содержимого файла.
// filectime() использовался в opencart вплоть до 2.3 версии, что является принципиальной ошибкой, порождающей иногда многократные (бесконечные) попытки
// перезаписи  файла в случае изменения (контента) исходного файла.
// ---------------------------- комментарий от sitecreator -------------------------------------------------------------------

 

  • +1 1
Надіслати
Поділитися на інших сайтах

Кстати, в самой свежей 2-й версии от 27.03.2021

ocStore 2.3.0.2.4

ошибка с filectime присутствует.

Надіслати
Поділитися на інших сайтах

26 минут назад, sitecreator сказал:

 

так должно было бы работать по логике вещей. Но...

это не всегда так  если речь об относительно старых версиях опенкарт, вплоть до 2.3 включительно.

Т.е. нормального поведения вы не всегда дождетесь.

в новой внесли исправление, ошибка ранее тянулась из поколения в поколение.

 

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

 

я уже ранее писал на эту тему. Только в 3-ке исправили ошибку.


// +++++++++++++++++++++++++++++ комментарий от sitecreator +++++++++++++++++++++++++++++++++++++
// Для контроля времени создания файлов
// используем везде filemtime() (Возвращает время последнего изменения файла)
// использование filectime() не годится, т.к. в случае изменения файла время изменения меняется, но filectime() будет возвращать
// "время создания файла" (в кавычках потому, что в Linux не существует такого понятия), точнее -
// возвращает время изменения индексного дескриптора файла, что обычно совпадает с временем создания файла на сервере

// https://www.php.net/manual/ru/function.filectime.php
// Примечание. На большинстве платформ Unix, файл считается измененным, если изменены данные его индексного дескриптора,
// что включает информацию о правах на файл, о его владельце, группе и другие метаданные, содержащиеся в индексном дескрипторе.

// даже при полном изменении (перезаписывании или удалении) файла filectime() возвратит точно такое же значение как до изменения файла
// если не менялись данные его индексного дескриптора
// filectime() - это именно время изменения индексного дескриптора, но не содержимого файла.
// filectime() использовался в opencart вплоть до 2.3 версии, что является принципиальной ошибкой, порождающей иногда многократные (бесконечные) попытки
// перезаписи  файла в случае изменения (контента) исходного файла.
// ---------------------------- комментарий от sitecreator -------------------------------------------------------------------

 

Согласен, что правильнее заменить filectime на filemtime, как в OpenCart 3.x

Змінено користувачем searchingman
Надіслати
Поділитися на інших сайтах


12 часов назад, sitecreator сказал:

Кстати, в самой свежей 2-й версии от 27.03.2021

ocStore 2.3.0.2.4

ошибка с filectime присутствует.

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

а где в коде это исправить ?

Спасибо

Надіслати
Поділитися на інших сайтах


29 минут назад, KomissarJuve сказал:

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

а где в коде это исправить ?

Спасибо

Для ocStore 2.3.0.2.4 в catalog/model/tool/image.php попробуйте сделать замену

Спойлер

// найти код
if (!is_file(DIR_IMAGE . $image_new) || (filectime(DIR_IMAGE . $image_old) > filectime(DIR_IMAGE . $image_new))) {

// заменить на
if (!is_file(DIR_IMAGE . $image_new) || (filemtime(DIR_IMAGE . $image_old) > filemtime(DIR_IMAGE . $image_new))) {

 

 

Надіслати
Поділитися на інших сайтах


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

Надіслати
Поділитися на інших сайтах


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

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

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

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

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

Вхід

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

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

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

Important Information

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