Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

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


Recommended Posts

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

Link to post
Share on other sites

  1. Пока не удалите вручную, или кроном
  2. При заходе в продукт, при отображении в категории, при добавлении в корзину. Там ведь не одна картинка в кеше создается, а под разные размеры
Link to post
Share on other sites

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

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

 

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

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

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

 

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

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

 

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

 

 

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

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

 

Link to post
Share on other sites

Для 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. Если я заменю картинку в товаре, то картинка в кеше сама обновится или нет, если да то через какое время?

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

Link to post
Share on other sites

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
Link to post
Share on other sites

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

ocStore 2.3.0.2.4

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

Link to post
Share on other sites

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

Edited by searchingman
Link to post
Share on other sites

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

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

ocStore 2.3.0.2.4

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

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

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

Спасибо

Link to post
Share on other sites

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))) {

 

 

Link to post
Share on other sites

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.