Написал модуль, который конвертирует .jpg и .png в .webp: http://marketplace.1c-bitrix.ru/solutions/delight.webpconverter/ Работает с изображениями в тегах <img/>. Конвертирует "на лету" (в момент загрузки страницы): оригиналы изображений остаются "как есть", сконвертированные изображения хранятся отдельно. В случае использования браузера без поддержки .webp, скрипт на JS возвращает ссылки на оригинальные изображения. Предложения по расширению функционала принимаются на почту dronazzz@mail.ru
После выгрузки обновлений каталога 1с, часть оригинальных изображений jpg/png будут удалены, но сконвертированные webp так и останутся на диске. Что приведёт к распуханию upload
Набросал скрипт проверяющий наличие оригинальных файлов и удаляющий webp, если оригиналов нет.
Код
find /home/bitrix/www/upload/ -type f -name \*.webp | sed 's/\.webp$//' | parallel -ea 'out={}.webp; [ -f {} ] || rm "$out"'
CDN выключен, всё перепробовал, не получается подмена.
Вижу Response headers: "vary: Accept-Encoding", но картинка грузиться с расширением .png, а не .webp
Подскажите пожалуйста что делать?
Так в том то и смысл, что расширение остаётся тоже, но сам контент подменяется. Смотрите в DevTools во вкладке Network колонку Type. Должно показывать webp, если конечно у файлов есть рядом лежащие .webp копии
Здравствуйте! Такая же ситуация. Type везде jpeg... Если не сложно, прикрепите полное содержание файла /etc/nginx/bx/conf/bitrix_general.conf. Заранее спасибо!
Обновление
Получилось) Делюсь опытом. Вот что у меня сработало:
Скрипт .sh. Пригодится тем, у кого уже куча картинок в папке upload. Настройки сжатия можно выставить самостоятельно. Можно конечно и cron использовать.
if ($request_uri ~* "^(.*/)index\.php$") { return 301 https://$host$1 ; } if ($request_uri ~* "^(.*/)index\.html$") { return 301 https://$host$1 ; }
set $imcontenttype "text/html; charset=utf-8"; add_header X-Frame-Options SAMEORIGIN; # composite variables set $composite_cache "bitrix/html_pages/${host}${composite_key}/index@${args}.html"; set $composite_file "${docroot}/${composite_cache}"; # config file set $composite_enabled "${docroot}/bitrix/html_pages/.enabled"; # if test pass through general tests: set $use_composite_cache ""; # global site test, the same for all sites on the server if ($is_global_composite = 1) {set $use_composite_cache "A";} # personal site tests, generated by site config if ($is_site_composite_05 = 1) {set $use_composite_cache "${use_composite_cache}B";}
# Include parameters common to all websites include bx/conf/bitrix_general.conf;
# main location with processing composite location / { if (-f $composite_enabled) { se t $use_composite_cache "${use_composite_cache}C"; } # test cache file exists if (-f $composite_file) { se t $use_composite_cache "${use_composite_cache}D"; }
# Include munin and nagios web include bx/server_monitor.conf; } Я так понимаю, что при очередном обновлении bitrix vm настройки не должны слететь. Или я не прав?)
Многократно использовал это решение. Но оказалось, что для картинок с русскоязычными названиями все равно отдается исходный файл.
dr.jpg заменяется на dr.webp, а вот др.jpg на др.webp - нет