Расход места на хостинге образами картинок

Магазин работает на SS5. В магазине работает плагин, который из каждой загружаемой к товару картинки создает ее варианты в других размерах. Все эти варианты картинок соответственно занимают много места на хостинге. Сейчас у меня при 7000 товаров 70 Гб. Перешел еуже на наибольший тариф VPS 90 Гб. При таком расходе места, как сейчас, скорее всего эти 20 Гб запаса за полгода - может, чуть больше - израсходуются и дальше на VPS двигаться некуда. В ближайшее время буду переходить на SS8. Разработчик темы, которую я присмотрел, говорит, что в плане картинок принцип у него тот же... Отсюда вопрос: кто как решал эту проблему, какие есть варианты оптимизации места на хостинге? Есть ли в Webasyst другие принципы обработки темами или плагинами изображений - не такие объемозатратные?

4 ответа

  • 2
    replicant 21 февраля 2020 14:36 #

    Способы есть, но все они сводятся к изначальному грамотному менеджменту эскизов ДО, чтобы не создавать ситуацию, когда надо решать проблему ПОСЛЕ.

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

    Также надо четко понимать среднее кол-во оригинальных фото на товар в вашем магазине. Это поможет рассчитать средний размер оригинала, чтобы не использовать оверсайзнутые изображения в несколько мегабайт или даже хотя бы в 2 раза превышающие максимальный размер эскиза, а сразу выполнять нормальную предподготовку, если вдруг среднее выбивается за границы разумного. Оригинал не должен сильно превышать по размерам как линейным так и в байтах максимальный создаваемый публичный эскиз. Оверсайз версии храните в другом месте как-нибудь. На сайт даже в папку с оригиналами это тащить не нужно.

    Вот давайте для примера взглянем на теоретическую абстрактную тему дизайна. Допустим она требует картинок 152х0, 146х0, 192х0, 55х55, 50х50. Движок по-умолчанию, если не править конфиг, генерирует в довесок 200х0 и 48х48.

    Вопрос. Можно ли обойтись вместо 192, эскизом на 200, а вместо 146, эскизом на 152 или даже на 200, чтобы минимизировать затраты? Можно ли вообще не генерировать 55 и 50 точек, а попробовать использовать 48 и 96 более разумно? Да, можно. Можно даже слегка подкроить дизайн, чтобы не сваливаться в масштабирование рядом стоящих размеров в пределах разброса в 5-7 точек. Всегда можно найти какой-то выход. Для этого надо сесть с бумагой и ручкой и составить четкий план.

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

    В итоге планирование может выглядеть так (каждый сам для себя обдумывает это в произвольной форме изложения, удобной для понимания)



    Итоговая конфигурация генерации эскизов на одном из проектов выглядит вот так

    Итого имеем 5 эскизов на один оригинал. Эскизы 96 и 48 точек крайне малы по размерам в килобайтах, а основную массу (до 98%) объема составляют по сути три размера.

    Уложившись с планированием в 3-5 эскизов вы выиграете немерянно места. До 2-х раз по сравнению с бездумной генерацией всего подряд всех размеров и пропорций + генерация по запросу.

    Запомните одну вещь. Тема дизайна требует, но решать в итоге вам. Поэтому требования можно и немного поменять.

    Была у меня как-то тема на доработке. В требованиях темы значилось 15 эскизов на одно фото + 5 дефолтных. Итого 20 штук. Сократил до 6 всего. Мир не рухнул. Знакомый уложился в 3 Гб места под фото при 2000 товаров. При этом среднее кол-во фотографий на товар составляет 3,6 в его магазине.

    На примерно 1000 товаров при 4,7 фото на товар у меня все укладывается в 2 Гб, включая оригиналы и это ещё с webp версиями, которые по сути увеличивают кол-во эскизов в 1,5-1,6 раза. Эскизы слева, оригиналы справа. Это для 1000 товаров.




    7000 товаров и 70 Гб - это слишком много. Надо переосмысливать концепцию и подход. Конечно может быть у вас 15-20 фото на товар только в оригиналах, тогда не вопрос, но если нет, то точно надо проводить анализ и браться за планирование.
  • 1
    Nikolai 21 февраля 2020 01:17 #

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

    • +1
      Константин Несен Константин Несен 22 февраля 2020 01:51 #
      оригиналы изображений, которые как раз и отжирают (вероятно) у вас все место

      Нет, смотрели структуру занятого места - бОльшая часть занята образами основных картинок, а не самими основными картинками

      пакетно привести к меньшему размеру (ограничив разрешение и качество картинки)

      это само собой стоит, видимо, сделать. Видел, есть соответствующий плагин:

      https://www.webasyst.ru/store/plugin/shop/imgcontrol/

      Попробовать бы. Отзыв, правда, аж один.

      • +1
        replicant replicant 22 февраля 2020 11:42 #

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

        1. Сколько оригиналов фото в штуках

        2. Сколько они занимают места в Мб

        3. Сколько эскизов в штуках

        4. Сколько они занимают места в Мб

        5. Сколько в точности товаров в шт

        6. Какие размеры эскизов и сколько эскизов на один оригинал генерируется темой и настройками Изображний в Магазине

        7. Включена ли генерация эскизов налету или нет? Генерируются ли х2 изображения или нет?

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

  • 1
    Nikolai 21 февраля 2020 01:19 #

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

  • 1
    Сергей Кирьянов 21 февраля 2020 14:35 #

    Я уже поднимал эту тему. Это баг. При наличии получаса свободного времени можно положить любой магазин на shop-script который использует эту технологию. Разработчиком пофиг

    • +1
      replicant replicant 21 февраля 2020 14:42 #

      Об этом ли баге я писал тему и баг пофиксили? Ссылка тут https://support.webasyst.ru/fo...

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

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите