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

Проблема с созданием миниатюр фото товара


Recommended Posts

Добрый день, прошу помощи, у меня есть скрипт на php который добавляет товары с моими данными, отдельно от админки, все работает, но я столкнулся с проблемой создания кеша картинок товара разного размера, а именно с скоростью создания... Cкрипт загружает оригиналы картинок в папку image/catalog/demo/папка с id товара/картинки, затем при переходе по урл на страницу товара opencart начинает генерировать миниатюры в папку image/cache/catalog/demo/папка с id товара/картинки, и создание миниатюр занимает от 30 до 100+сек, в зависимости от размеров картинок, макс 5мб - 1 шт, и пока не создаст миниатюры - нельзя открыть страницу товара, т.к. блокируется запрос как я понял, и мне очень не нравится что так долго нужно ждать генерацию, т.к. я например создал товар, и заходит одновременно 5 пользователей, и не могут зайти на страницу товара, т.к. генерируются миниатюры достаточно долго. Подскажите пожалуйста, как можно ускорить данный процесс ? или только генерировать миниатюры сразу во время создания товара в бд и загрузки оригиналов? или возможно есть какая-то улучшенная библиотека для работы с изображениями. Так же у меня была мысль что такое долгое создание миниатюр из-за того что я загружаю оригиналы картинок товара с разбивкой по папками, а не все картинки в 1 папке как изначально создает опенкарт. Заранее спасибо за помощь и подсказки!

Link to comment
Share on other sites


Вообще странно. Сколько у Вас картинок в каждом товаре (в среднем)?
Зависит от хостера, конечно, но 100+ секунд - это что-то новое.
И да, если Вы единожды зашли в товар, то будут созданы "миниатюры" в папке cache, которые в последствии и будут использоваться для всех посетителей сайта. Т.е. задержка только для первого посетителя.
Но 100+ секунд. Может есть смысл сжимать изображения предварительно? Не пробовали? В тот же png (если нужен альфа канал) или лучше в jpg со сжатием 80-85, но размером не больше фуллашди (т.е. шириной не больше 1920). В таком случае изображения будут гораздо "легче".

  • +1 1
Link to comment
Share on other sites

Если у Вас шаред, да даже если не шаред, то 5мб большой размер. Кеш генерируется один раз. Достаточно одному человеку зайти, чтобы кеш сгенерировался, остальные уже получат кэшированные файлы. В одну папку все картинки не стоит сгружать, лучше разбивать по папкам.

  • +1 1
Link to comment
Share on other sites

22.06.2022 в 19:01, nogocuHoBuk сказал:

Вообще странно. Сколько у Вас картинок в каждом товаре (в среднем)?
Зависит от хостера, конечно, но 100+ секунд - это что-то новое.
И да, если Вы единожды зашли в товар, то будут созданы "миниатюры" в папке cache, которые в последствии и будут использоваться для всех посетителей сайта. Т.е. задержка только для первого посетителя.
Но 100+ секунд. Может есть смысл сжимать изображения предварительно? Не пробовали? В тот же png (если нужен альфа канал) или лучше в jpg со сжатием 80-85, но размером не больше фуллашди (т.е. шириной не больше 1920). В таком случае изображения будут гораздо "легче".

От 4 до 10 фото макс., 100 сек+ если оригиналы весят 3-5мб каждый...

Да, они раз генерируются и дальше сразу все работает, но вот в этой разовой генерации и проблема, т.к. может зайти в товар сразу 10 юзеров, и получат белый экран загрузки страницы, т.к.генерируются миниатюры 30-50 сек и больше, и я могу после добавления товара не сразу зайти для генерации миниатюр, и в итоге опять "лаг" будет у тех кто откроет товар первый раз после добавления на сайт...

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

Подскажите еще пожалуйста, есть ли готовая проверенная быстрая php библиотека которой я могу до загрузки на фтп оптимизировать оригиналы(сжать), и нарезать миниатюры в папку cache? Если да, поделитесь пожалуйста названием, я еще хочу прикрутить загрузку фото с перетягиванием из папок на пк и сразу с загрузкой картинок на ajax нашел такой плагин innostudio.de/fileuploader/#examples (не реклама), можно его использовать или есть лучше? мне важно чтобы была возможность загрузки на сервер на ajax сразу после выбора фото, сортировка, перетягивание или выбор + мобильная адаптивность, и проверка размера и формата фото в этом же плагине(помимо php), заранее спасибо!

Link to comment
Share on other sites


Posted (edited)
22.06.2022 в 19:04, ibond сказал:

Если у Вас шаред, да даже если не шаред, то 5мб большой размер. Кеш генерируется один раз. Достаточно одному человеку зайти, чтобы кеш сгенерировался, остальные уже получат кэшированные файлы. В одну папку все картинки не стоит сгружать, лучше разбивать по папкам.

Пока шаред, неплохой по характеристиками и не дешевый, но конечно же понимаю что хуже чем впс, как я понимаю все создания миниатюр мне нужно делать сразу во время загрузки оригиналов, чтобы потом товар первый раз сразу открывался без ожидания, т.к. как раз это первое открытие и долгое ожидание - создает проблему для юзеров, если бы еще генерация занимала 3-5 сект - то еще ладно, но 30-50 и 100+сек мало кто хочет ждать, а я банально после создания товара могу забыть зайти на его стр...Спасибо

Edited by AndreLisif
Link to comment
Share on other sites


22.06.2022 в 20:24, AndreLisif сказал:

создавать миниатюры нужных размеров в папку cache

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

  • +1 1
Link to comment
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
 Share

×
×
  • 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.