Задать вопрос
@lazix

Приемлемо ли использовать base64+mod_gzip для передачи и отображения картинок из 1С в Битрикс?

В 1С используется модуль HTML-описаний, который хранит в описаниях товаров встроенные картинки как base64. Соответственно, далее эта инфа передаётся на сторону сайта на битриксе, где base64 отображается уже в браузере.

Base64 увеличивает вес картинки примерно на треть, а mod_gzip сжимает html-код страницы обратно. Итого получается около в среднем 1% накладных расходов по моим экспериментам: картинка из 100 КБ превращается в код 133 КБ, который при передаче сожмётся в 101 КБ.

Допустима ли, на ваш взгляд, такая схема? Верны ли мои предположения?
Меня беспокоит:
1. Нет ли ошибки?)
2. Браузер не сможет кэшировать такие картинки?

PS. Переписывать код на хранение картинок в файлах и последующий обмен с битриксом экономически крайне не оправдано.
  • Вопрос задан
  • 155 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
Prilepsky
@Prilepsky
Программист 1C
Если работает и обмен не каждые 5 секунд, то почему бы и нет?
Информация в товарах, особенно изображения, меняются крайне редко и экономить КБ тут смысла сильно нет.
Про кэширование точно не скажу, но сам давно использовал такой прием для хранения небольших картинок в CSS, знаю, что так многие делали. Но как он сейчас - уже не подскажу :)
Ответ написан
Комментировать
1. Нет ли ошибки?)

Ошибки в чем?

2. Браузер не сможет кэшировать такие картинки?

Дело не в том что не сможет - не будет, поскольку это бессмысленно.
Представим что все эти картинки в dataurl браузер закэшировал... и что? Теперь они магическим образом исчезнут из страницы которую вы передаете браузеру? Нет. Сервер все так же встраивает их в страницу и браузер ее все так же скачивает целиком. А зачем он их тогда кэшировал?

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

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

Таким образом хорошо это или плохо зависит от сценария использования вашего сайта.
Если клиент только один раз загрузит страницу с товарами, посмотрит на цены и в ужасе закроет вкладку, то потери и правда будут в районе нескольких процентов. Если несколько раз... ну давайте посчитаем.
Пусть размер страницы 200Кб и на ней еще 2Мб изображений. Тогда в классической ситуации первая загрузка страницы будет ~2200Кб, а все последующие 200Кб. В вашем случае все загрузки будут по 2200Кб.

Таким образом если клиент посещает страницу один раз - разницы нет. Если два - то доп расходы составят 83%, если 4 раза - 215% лишнего трафика сверху.

Но все зависит от повторных просмотров и размеров ваших картинок и отношению этого размера к размеру страницы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы