Почему не меняются изображения на webp в W3 Total Cache Image Service?
Установил расширение W3 Total Cache Image Service. Преобразовал существующие jpeg и png файлы в webp. D В директории /uploads/.. новые картинки появились для всех миниатюр. Но замены на сайте нет. Хотя везде я подключаю картинки через функцию wp_get_attachment_image().
Думал проблема в nginx. Но я в нем плохо шарю. Дайте пожалуйста совет, куда копать. У меня конфиг следующий:
server { listen 80; server_name sitename.com www.sitename.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name sitename.com www.sitename.com; ssl_certificate /etc/letsencrypt/live/sitename.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/sitename.com/privkey.pem; # managed by Certbot ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; root /var/www/html/sitename.com; index index.php; gzip_disable "msie6"; location ~ /. { deny all; } location ~* /(?:uploads|files)/.*.php$ { deny all; } # location ~* ^.+.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|webp|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { # access_log off; # log_not_found off; # expires max; # } location / { try_files $uri $uri/ /index.php?$args; # permalinks } location ~ .php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # BEGIN W3TC Page Cache core set $w3tc_rewrite 1; if ($request_method = POST) { set $w3tc_rewrite 0; } if ($query_string != "") { set $w3tc_rewrite 0; } set $w3tc_slash ""; if ($request_uri ~ /$) { set $w3tc_slash _slash; } if ($http_cookie ~* "(comment_author|wp-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle)") { set $w3tc_rewrite 0; } set $w3tc_preview ""; if ($http_cookie ~* "(w3tc_preview)") { set $w3tc_preview _preview; } set $w3tc_ssl ""; if ($scheme = https) { set $w3tc_ssl _ssl; } if ($http_x_forwarded_proto = 'https') { set $w3tc_ssl _ssl; } set $w3tc_enc ""; if ($http_accept_encoding ~ gzip) { set $w3tc_enc _gzip; } if (!-f "$document_root/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_slash$w3tc_ssl$w3tc_preview.html$w3tc_enc") { set $w3tc_rewrite 0; } if ($w3tc_rewrite = 1) { rewrite .* "/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_slash$w3tc_ssl$w3tc_preview.html$w3tc_enc" last; } # END W3TC Page Cache core # BEGIN W3TC Page Cache cache location ~ /wp-content/cache/page_enhanced.*gzip$ { gzip off; types {} default_type text/html; add_header Content-Encoding gzip; etag on; if_modified_since exact; add_header Pragma "public"; add_header Cache-Control "max-age=3600, public"; add_header Referrer-Policy "no-referrer-when-downgrade"; } # END W3TC Page Cache cache # BEGIN W3TC Browser Cache gzip on; gzip_types text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/richtext text/plain text/xsd text/xsl text/xml image/bmp application/java application/msword application/vnd.ms-fontobject application/x-msdownload image/x-icon application/json application/vnd.ms-access video/webm application/vnd.ms-project application/x-font-otf application/vnd.ms-opentype application/vnd.oasis.opendocument.database application/vnd.oasis.opendocument.chart application/vnd.oasis.opendocument.formula application/vnd.oasis.opendocument.graphics application/vnd.oasis.opendocument.spreadsheet application/vnd.oasis.opendocument.text audio/ogg application/pdf application/vnd.ms-powerpoint image/svg+xml application/x-shockwave-flash image/tiff application/x-font-ttf audio/wav application/vnd.ms-write application/font-woff application/font-woff2 application/vnd.ms-excel; location ~ .(css|htc|less|js|js2|js3|js4)$ { expires 31536000s; etag on; if_modified_since exact; add_header Pragma "public"; add_header Cache-Control "public"; add_header Referrer-Policy "no-referrer-when-downgrade"; try_files $uri $uri/ /index.php?$args; } location ~ .(html|htm|rtf|rtx|txt|xsd|xsl|xml)$ { etag on; if_modified_since exact; add_header Pragma "public"; add_header Cache-Control "max-age=3600, public"; add_header Referrer-Policy "no-referrer-when-downgrade"; try_files $uri $uri/ /index.php?$args; } location ~ .(asf|asx|wax|wmv|wmx|avi|avif|avifs|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|webp|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|webm|mpp|_otf|odb|odc|odf|odg|odp|ods|odt|ogg|ogv|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|_ttf|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ { expires 31536000s; etag on; if_modified_since exact; add_header Pragma "public"; add_header Cache-Control "public"; add_header Referrer-Policy "no-referrer-when-downgrade"; location ~* ^(?<path>.+).(jpe?g|png|gif)$ { if ( $http_accept !~* "webp|*/*" ) { break; } expires 31536000s; etag on; if_modified_since exact; add_header Pragma "public"; add_header Cache-Control "public"; add_header Referrer-Policy "no-referrer-when-downgrade"; add_header Vary Accept; try_files ${path}.webp $uri /index.php?$args; } try_files $uri $uri/ /index.php?$args; } add_header Referrer-Policy "no-referrer-when-downgrade"; # END W3TC Browser Cache } |
server { listen 80; server_name sitename.com www.sitename.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name sitename.com www.sitename.com; ssl_certificate /etc/letsencrypt/live/sitename.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/sitename.com/privkey.pem; # managed by Certbot ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; root /var/www/html/sitename.com; index index.php; gzip_disable "msie6"; location ~ /. { deny all; } location ~* /(?:uploads|files)/.*.php$ { deny all; } # location ~* ^.+.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|webp|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { # access_log off; # log_not_found off; # expires max; # } location / { try_files $uri $uri/ /index.php?$args; # permalinks } location ~ .php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # BEGIN W3TC Page Cache core set $w3tc_rewrite 1; if ($request_method = POST) { set $w3tc_rewrite 0; } if ($query_string != "") { set $w3tc_rewrite 0; } set $w3tc_slash ""; if ($request_uri ~ /$) { set $w3tc_slash _slash; } if ($http_cookie ~* "(comment_author|wp-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle)") { set $w3tc_rewrite 0; } set $w3tc_preview ""; if ($http_cookie ~* "(w3tc_preview)") { set $w3tc_preview _preview; } set $w3tc_ssl ""; if ($scheme = https) { set $w3tc_ssl _ssl; } if ($http_x_forwarded_proto = 'https') { set $w3tc_ssl _ssl; } set $w3tc_enc ""; if ($http_accept_encoding ~ gzip) { set $w3tc_enc _gzip; } if (!-f "$document_root/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_slash$w3tc_ssl$w3tc_preview.html$w3tc_enc") { set $w3tc_rewrite 0; } if ($w3tc_rewrite = 1) { rewrite .* "/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_slash$w3tc_ssl$w3tc_preview.html$w3tc_enc" last; } # END W3TC Page Cache core # BEGIN W3TC Page Cache cache location ~ /wp-content/cache/page_enhanced.*gzip$ { gzip off; types {} default_type text/html; add_header Content-Encoding gzip; etag on; if_modified_since exact; add_header Pragma "public"; add_header Cache-Control "max-age=3600, public"; add_header Referrer-Policy "no-referrer-when-downgrade"; } # END W3TC Page Cache cache # BEGIN W3TC Browser Cache gzip on; gzip_types text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/richtext text/plain text/xsd text/xsl text/xml image/bmp application/java application/msword application/vnd.ms-fontobject application/x-msdownload image/x-icon application/json application/vnd.ms-access video/webm application/vnd.ms-project application/x-font-otf application/vnd.ms-opentype application/vnd.oasis.opendocument.database application/vnd.oasis.opendocument.chart application/vnd.oasis.opendocument.formula application/vnd.oasis.opendocument.graphics application/vnd.oasis.opendocument.spreadsheet application/vnd.oasis.opendocument.text audio/ogg application/pdf application/vnd.ms-powerpoint image/svg+xml application/x-shockwave-flash image/tiff application/x-font-ttf audio/wav application/vnd.ms-write application/font-woff application/font-woff2 application/vnd.ms-excel; location ~ .(css|htc|less|js|js2|js3|js4)$ { expires 31536000s; etag on; if_modified_since exact; add_header Pragma "public"; add_header Cache-Control "public"; add_header Referrer-Policy "no-referrer-when-downgrade"; try_files $uri $uri/ /index.php?$args; } location ~ .(html|htm|rtf|rtx|txt|xsd|xsl|xml)$ { etag on; if_modified_since exact; add_header Pragma "public"; add_header Cache-Control "max-age=3600, public"; add_header Referrer-Policy "no-referrer-when-downgrade"; try_files $uri $uri/ /index.php?$args; } location ~ .(asf|asx|wax|wmv|wmx|avi|avif|avifs|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|webp|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|webm|mpp|_otf|odb|odc|odf|odg|odp|ods|odt|ogg|ogv|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|_ttf|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ { expires 31536000s; etag on; if_modified_since exact; add_header Pragma "public"; add_header Cache-Control "public"; add_header Referrer-Policy "no-referrer-when-downgrade"; location ~* ^(?<path>.+).(jpe?g|png|gif)$ { if ( $http_accept !~* "webp|*/*" ) { break; } expires 31536000s; etag on; if_modified_since exact; add_header Pragma "public"; add_header Cache-Control "public"; add_header Referrer-Policy "no-referrer-when-downgrade"; add_header Vary Accept; try_files ${path}.webp $uri /index.php?$args; } try_files $uri $uri/ /index.php?$args; } add_header Referrer-Policy "no-referrer-when-downgrade"; # END W3TC Browser Cache }
Дополнительно
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Если W3 Total Cache Image Service не меняет изображения на WebP, причина может быть в том, что WebP-файлы не созданы, не подключён rewrite, HTML не переписывается или сервер/CDN отдаёт старый кэш. Сначала проверьте физически: появились ли WebP-версии изображений.
Проверьте:
Откройте Network в браузере и посмотрите фактический
Content-Typeизображения. Если URL старый.jpg, но сервер отдаётimage/webp, это нормально. Если отдаётсяimage/jpeg, подмена не работает.Также проверьте, не вставлены ли картинки через CSS background. Многие оптимизаторы переписывают только
<img>, но не фоновые изображения.После включения очистите все уровни кэша: W3TC page cache, browser cache, object cache, CDN cache. Если стоит Cloudflare, проверьте Polish/Image Resizing, они могут конфликтовать с локальной WebP-логикой.
Если W3TC стабильно не справляется, часто проще использовать ShortPixel/Imagify/EWWW или серверную генерацию WebP через хостинг.