прошу помощи решить проблему при оптимизации сайта , гугл pagespeed просит "Используйте современные форматы изображений" (JPEG 2000, JPEG XR и WebP) попробовал формат
WebP - вроде работает но оказалось он не отображает в Firefox , Safari
JPEG 2000 - вообще не могу вывести на Web как обычную картинку
подскажите может кто-то сталкивался с такими форматами как с ними правильно работать или как вывести на web JPEG 2000 , работает он вообще в других браузерах ?
Можно использовать тег picture:
<picture>
<source type="image/webp" srcset="path/to/image.webp">
<source type="image/jp2" srcset="path/to/image.jp2">
<source type="image/jxr" srcset="path/to/image.jxr">
<img src="path/to/image.jpg">
</picture>
Но тег picture тоже мало где поддерживается, поэтому нужен будет js: https://github.com/scottjehl/picturefill Достаточно просто подключить и всё:
<script async=true src=/path/to/picturefill.js></script>
<script async=true src=/path/to/jxr.js></script>
<script async=true src=/path/to/jp2.js></script>
Но я бы не стал заморачиваться и всё таки ПОКА проигнорировал рекомендации гугла. Может быть в будущем к этому можно будет вернуться.
UPD от 26.01.2019: пример реалиализации отдачи webp
на стороне веб-сервера, например Nginx
.
Как правило браузер передаёт серверу информацию о поддерживаемых технологий. Например Chrome передаёт такие значения Accept: image/webp, */*;q=0.8
. Поэтому можно отдавать определённые изображения на стороне сервера.
Пример Nginx:
location / {
# проверка заголовка Accept и наличия версии файла в .webp
if ($http_accept ~* "webp") { set $webp_accept "true"; }
if (-f $request_filename.webp) { set $webp_local "true"; }
# если WebP есть, то передать Vary
if ($webp_local = "true") {
add_header Vary Accept;
}
# если клиент поддерживает WebP, то передать файл
if ($webp_accept = "true") {
rewrite (.*) $1.webp break;
}
}
Пример Apache:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule (.+)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]
</IfModule>
<IfModule mod_headers.c>
Header append Vary Accept env=REDIRECT_accept
</IfModule>
AddType image/webp .webp
Примеры для разных веб-серверов можно найти здесь.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Сервер принимает в обработку текстовом формате данные через form-dataНе могу понять как правильно эти данные отправить ? Через Postman всё работает...
Доброй ночи! У меня тут какая-то непонятная ситуацияНапример, в методе readMapSettings() в waterBody