Перейти к содержанию
iga8

[Решено {фантазия}] Кеширование картинок - проблема

Рекомендуемые сообщения

Проблема такая! Если мы добавим одну картинку в описание товара, то эта картинка размножаться на несколько маленьких картинок. Основная картинка попадёт в папку image, а размноженные картинки в папку image/cache и image/cache/data. На одну картинку приходится до 10 размноженных. Это значит, что если будет 1000 товаров с основными картинками, то добавиться 10 000 размноженных. Размноженные картинки можно смело удалять - сайт будет работать нормально. Но они будут заново генерироваться, когда кто-то зайдет на сайт для просмотра товара. Это является большой проблемой в опенкарт у кого хостинг не резиновый. И единственный способ избавиться от этой проблемы является - удаление картинок через определённый промежуток времени с помощью команды Cron. Например я хочу чтобы эти картинки удалялись через каждый час. Посетитель зайдет, сгенерируются картинки, и через час эти картинки удаляться. Вопрос: как настроить cron что бы он уделял картинки из папки через определённый промежуток времени.

 

P.S. - если мы создадим простой html документ и загрузим на сервер одну картинку, то мы можем вставить в документ данную картинку неограниченное число раз и в разных размерах. То есть, мы можем 10 раз указать путь к картинке в документе, и картинка будет одна. Почему такое нельзя сделать в опенкарт?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:?

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

 

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

структура opencart в этом плане вполне неплоха - он из основной картинки создает и помещает в кеш картинки, настройки размеров которых заданы в админке

 

например - в каталоге картинка 100х100, в карточке товара - большая, 400х400, в корзине 40x40 и тд

при просмотре проверяется, есть ли нужная картинка такого размера, если нет - создается, если есть - берется из кеша (т.е. не нужно тратить время на ее создание)

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

 

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

 

представьте, что у вас оригинальная картинка занимает 100кб.

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

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

а если в корзине 10 товаров? это грузить 1МБ только для показа корзины!

 

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

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

 

ну и ключевой момент - вы с магазина планируете прибыль получать? если да - место на хостинге не должно быть проблемой

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделано очень глупо! Почему нельзя было стандартно - там где вывод картинок указать пути, а в css задать размеры ширину и высоту. И тогда одна картинка выводится во многих местах - и не дробиться.

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделано очень глупо! Почему нельзя было стандартно - там где вывод картинок указать пути, а в css задать размеры ширину и высоту. И тогда одна картинка выводится во многих местах - и не дробиться.

как вы внимательно читали оратора выше :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

3387303_original.jpg

 

Основная картинка попадёт в папку image, а размноженные картинки в папку image/cache и image/cache/data. На одну картинку приходится до 10 размноженных. 

 

 

:ugeek:

 

Хотя больше похоже на паранойю.

 

Вам однозначно нужно забить на всём что касается опенкарт ,как движка.И тогда не будет причин  для столь неистового  возмущения .

 

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

  • +1 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как вы внимательно читали оратора выше :)

 

больше столько много букв писать не буду! :-D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Сделано очень глупо! Почему нельзя было стандартно - там где вывод картинок указать пути, а в css задать размеры ширину и высоту. И тогда одна картинка выводится во многих местах - и не дробиться.

Интересно, что по трафику получается. Картинку передаётся по интернету один раз и берётся в разные места на экран из кэша браузера или каждый раз подгружается с сервера? Было бы интересно узнать, какие значения трафика при запросе на разные браузеры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

В итоге - страница с полусотней товаров в глубоком ступоре, браузер виснет, пользователь закрывает к черту этот дерьмосайт, хостер писает кипятком из-трафика. Хотите острых ощущений?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Народ, мне просто интересно, я даже не собирался так делать, ногами не бейте )
А что будет, если грохнуть image/catalog ? все равно же используется кэш, зачем оставлять оригиналы? у меня эта папка занимает 7 gb памяти, скоро будет все 12. Ну или скачать на комп, а с сервера грохнуть? 

Что скажут знатоки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По аналогии можно выстрелить в ногу....Ну или уши отморозить на зло бабушке.

По сути не нужно искать ,что грохнуть ради экономии,нужно задуматься о расширении возможностей хостинга.

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, DiNoZavr сказал:

А что будет, если грохнуть image/catalog ? все равно же используется кэш, зачем оставлять оригиналы?

это как отксерить паспорт и выбросить оригинал

 

будет работать ровно до того момента, пока не понадобится именно оригинал

например для создания изображения с размерами, отсутствующими в кеше

  • +1 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Например, создался  в папке файл размером 1,9 мБайт, я сжал сервисом его tinypng.com  файл стал весить 54кБайт.

 

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

 

 

eva-2mm-belui-700x700.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

используйте формат jpg вместо png, там где он дает выигрыш

плюс изначально обрабатывайте оригиналы

 

как вариант, есть такой модуль

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
19 минут назад, Shar сказал:

Ограничение на хостинге не по объему, а по количеству файлов на логине

 

чисто из любопытства - а если у вас каждый файл по 10гб будет? хостер не возражает? ;)

ищите нормальный хостинг

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите пожалуйста.

с папки image/cache были удалены некоторые картинки.

Теперь на странице категорий сайте нет некоторых картинок товаров. В карточке товар есть.

Я та понимаю, что не хватает некоторых ресайзов. Как мне их востановить? Или может подскажите как запустить кеширование принудительно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, vkravez сказал:

с папки image/cache были удалены некоторые картинки.

Теперь на странице категорий сайте нет некоторых картинок товаров. В карточке товар есть.

Я та понимаю, что не хватает некоторых ресайзов. Как мне их востановить?

 

если вы сами оригиналы из image не трогали - движок при просмотре страниц автоматом создаст картинки нужных размеров в кеше

выше все это обсуждалось

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
20 часов назад, AlexDW сказал:

 

если вы сами оригиналы из image не трогали - движок при просмотре страниц автоматом создаст картинки нужных размеров в кеше

выше все это обсуждалось

Вопрос решен.
Все было банально просто. Нашел какие картинки не кешируються и скачал оригиналы. Выяснолось, что картинки были 2500х3700 пикс.  Исправил на 500х1500 и все ок.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем привет.

К примеру у меня оригинал изображения 800х500 весит 50 Кб.

В кэше это изображение с этим же размером 800х500 создается с размером в 130 Кб.

Почему так? У всех так? 

jpg

Изменено пользователем roman409

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, roman409 сказал:

Всем привет.

К примеру у меня оригинал изображения 800х500 весит 50 Кб.

В кэше это изображение с этим же размером 800х500 создается с размером в 130 Кб.

Почему так? У всех так? 

jpg

 

Странно, но не реагирует на изменения в строке:

public function save($file, $quality = 90) {

 

Ниже заменил $quality на 90

и размер изображения в кэше стал почти 1:1 к оригиналу:

if (is_resource($this->image)) {
            if ($extension == 'jpeg' || $extension == 'jpg') {
                imagejpeg($this->image, $file, 90);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Absalem
      Добрый день!
      У меня окстор Версия 1.5.5.1.1, все картинки кешируются в папку image/cache/ без подпапок, где путь к файлу исходнику в кешированной картинке сохраняется в самом имени файла, например: /image/cache/data-products-citilux-cl407111-700x700.jpg
      В итоге получается, что в папке image/cache/  у меня порядка 24 тысячи картинок.
      Я видела, что в других версиях окстора в папке /image/cache/ сохраняется структура папок такая же, как image/data/
       
      Как мне на моем сайте сделать так, чтоб кешированые картинки тоже сохранялись по такой же структуре папок, как в image/data/
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.