OC v3.х Ресайзы, кеши

  • Автор темы Автор темы Astronaut
  • Дата начала Дата начала

Astronaut

Разрушитель (V)
Сообщения
477
Реакции
170
Баллы
889
Привет всем. ежедневно удаляется машин 500 с сайта и добавляется. у каждой по 25-30 фото. Из которых делаются все ресайзы фото, еще штук *15-20
И обновляю данные фильтра OcFilter

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

если ли софт какой для прогрессивного создания всех возможных ресайзов фото ?
и проход ocfilter по всем параметрам и отборам для создания кеша ?
Надо как то на автомате запускать ежедневно
 
А как же создание миниатюр через стандарт опенкарта?
Прогони сайт парсером с другого домена допустим, поставь на поддомен simlepars и гоняй хоть кругосуточно.
 
А как же создание миниатюр через стандарт опенкарта?
Прогони сайт парсером с другого домена допустим, поставь на поддомен simlepars и гоняй хоть кругосуточно.
да не вариант. с 19 до 22 идет парсинг с китая. потом создание бэкапа сайта на сервере. с 1 ночи идет импорт на сайт, до 8-9 утра
ну и потом я запускаю Xenu или ScreamFrog и прохожу ссылки. это часов до 16-17
получается круглосуточно сайт под нагрузкой
яндекс матерится что сайт открывается долго

у каждой машины штук 30-35 фото. из них у каждой штук по 10 ресайзов. и потом еще кеш webp
жуть короче
 
да не вариант. с 19 до 22 идет парсинг с китая. потом создание бэкапа сайта на сервере. с 1 ночи идет импорт на сайт, до 8-9 утра
ну и потом я запускаю Xenu или ScreamFrog и прохожу ссылки. это часов до 16-17
получается круглосуточно сайт под нагрузкой
яндекс матерится что сайт открывается долго

у каждой машины штук 30-35 фото. из них у каждой штук по 10 ресайзов. и потом еще кеш webp
жуть короче
а почему ты не поставишь на поддомен simplepars и не настроишь проход по крону?
Ведь та же Xenu скорее всего работает на ядре Хрома и имитирует полный браузер и полный заход пользователя (для правильного считывания страниц и обхода всяких cloudflare) в то время как парсер сразу за секунду пиздить просто html, но так-же дает опенкарту команду перепроверить страницу на наличие ресайзов, новых значений в базе.... просто быстрее

2) вариант, переписать импорт тулз чтобы она сразу генерировалась ресайзы, при каждому импорте. С такой задачей у тебя справится любой ИИ агент. Возьми тот же Антигравити на месяц бесплатно, но боюсь там лимиты могут сожратся за пару часов... лучше opencode


Примерно логика такая:
В OpenCart функция getImage обычно находится в модели для обработки изображений — чаще всего в файле:

catalog/model/tool/image.php
иногда ещё есть админская версия: admin/model/tool/image.php

Там ищи метод вроде:

public function resize($filename, $width, $height) {

или старые версии могут иметь:

public function resize($filename, $width, $height, $type = '')

Именно resize() в OpenCart — это и есть место, где:

проверяется кеш
создаются ресайзы
сохраняется файл
возвращается путь

Обычно логика такая:
В OpenCart функция getImage обычно находится в модели для обработки изображений — чаще всего в файле:


  • catalog/model/tool/image.php
  • иногда ещё есть админская версия: admin/model/tool/image.php

Там ищи метод вроде:



public function resize($filename, $width, $height) {


или старые версии могут иметь:




public function resize($filename, $width, $height, $type = '')



Именно resize() в OpenCart — это и есть место, где:


  • проверяется кеш
  • создаются ресайзы
  • сохраняется файл
  • возвращается путь

Обычно логика такая:


  1. Контроллер вызывает model_tool_image->resize()
  2. Метод проверяет наличие файла в /image/cache/...
  3. Если нет — генерирует
  4. Возвращает URL

Если тебе нужно генерировать ресайзы сразу при импорте, то:


  • ты просто вызываешь resize() в цикле по нужным размерам
  • OpenCart сам создаст кеш заранее

Пример (псевдокод):




$sizes = [
[100,100],
[300,300],
[800,600],
];

foreach ($sizes as $size) {
$this->model_tool_image->resize($image, $size[0], $size[1]);
}



Это создаст все ресайзы до того, как их запросит фронт — и сайт перестанет тормозить.
 
Последнее редактирование:
Это создаст все ресайзы до того, как их запросит фронт — и сайт перестанет тормозить.
так эти правки создадут ресайзы в catalog
а не в кеше
и потом есть еще создание кеша webp
 
так эти правки создадут ресайзы в catalog
а не в кеше
и потом есть еще создание кеша webp
Тот же принцип что и с ресвйзами, только создать заодно кеш копию.

Через импорт или парсер тебе нужно создавать?
 
у меня pyton парсит "сайт" и создает excel файл и папку с картинками. из которой я потом anySCV импортирую товары и картинки
и уже проходя xenu или screamfrog создаю кеш картинок
 
ох какой костиль то оО
Симплпарс проще будет, с поддержкой пхп кода.... делай что хочешь....
 
так, ок , забей на симпл если тебе так проще.


1. Разбор CSV/XLS (getImages() - строка 15939)
Изображения разделяются по указанному разделителю (по умолчанию запятая)
Для каждого изображения проверяется настройка image_upload
2. Если включена загрузка изображений (image_upload = true)
Вызывается getImageByUrlOnImage() (строка 15442):

Проверка существования - если файл уже есть в DIR_IMAGE, возвращается существующий
Загрузка - поддерживаются два метода:
cURL (если image_upload_curl = true) - через curl_init()
file_get_contents - через get_headers() для проверки типа, затем загрузка
Проверка MIME-типа - удаляется файл, если это HTML (не картинка)
Сохранение - кладётся в папку DIR_IMAGE (по умолчанию или в указанную через image_new_path)
Кроп/Резсайз (resizeImg() строка 15751) - если настроено:
Обрезка по краям (image_crop_left/top/right/bottom)
Ограничение размера (image_max_width/height)


Я скормил код и....

там не хватает всего-то:
PHP:
                $image = $this->createWebPImage($image, $general_setting, $log_data);
                $image = $this->createImageCache($image, $general_setting, $log_data);
можно без логов :)

Дай мне готовый любой архив с фото + Ексель таблицей... щас запилим тебе//


Скрытое содержимое. Вам нужно войти или зарегистрироваться.


ай, кароче) лень качать 7.4 php, я под 8.1 давно пишу )
Попробуй, добавил в настройки при импорте пункты создавать кеш и webp (включая качество).
Если у тебя webp делается, значить минимум 3.0.3.8, или 3.0.4.1 (я использую 3.0.4.1)
Должно работать, попробуй на тестовом, или прийдется в ручную потом удалить файлы и залить старую версию.

Проверка идет так > если изображение уже есть на сервере (я про кеш и webp) то он будет пропускать, такая же логика и у этого модуля
 
Последнее редактирование:
Сервер тупит из-за массового ресайза или страница долго открывается из-за ресайза?
А на счёт бекапа - рекомендую переходить на инкрементный. Экология и по времени и по размерам.
 
ох какой костиль то оО
Симплпарс проще будет, с поддержкой пхп кода.... делай что хочешь....
А как я сделаю парс симплпарсом, если это не сайт?
Это приложение в wechat
Китайский магазин на китайском языке
 
Дай мне готовый любой архив с фото + Ексель таблицей... щас запилим тебе//
Благодарю за помощь
Скину прайс и папку с фото
Часть
Но попозже
На даче надо трудиться)
 
Сервер тупит из-за массового ресайза или страница долго открывается из-за ресайза?
А на счёт бекапа - рекомендую переходить на инкрементный. Экология и по времени и по размерам.
Да он не то что бы тупит
А просто создает в этот момент кучу ресайзов/кеша и тут же webp
Получается штук 50-60 картинок в одном товаре создает, если не больше
Открытие товара секунды 3
Потом уже летает конечно)
 
Да он не то что бы тупит
А просто создает в этот момент кучу ресайзов/кеша и тут же webp
Получается штук 50-60 картинок в одном товаре создает, если не больше
Открытие товара секунды 3
Потом уже летает конечно)
Тогда генерацию картинок нужно перенести в деструкт. И показать заглушку.
 
Назад
Верх