php - 配置 Nginx 以提供 WEBP 图像?
问题描述
我正在使用 ShortPixel 创建名为 image.webp 的 WEBP 图像,并保存在与 image.jpg 相同的文件夹中。
- 我在 etc/nginx/conf.d/webp.conf 中添加了这个:
map $http_accept $webp_suffix {
default "";
"~*webp" ".webp";
}
并添加include etc/nginx/conf.d/*.conf
到 nginx 配置文件中。
- 在 etc/nginx/conf.d/site.conf 中添加了这个
location ~* ^(/wp-content/.+)\.(png|jpe?g)$ {
set $base $1;
set $webp_uri $base$webp_suffix;
set $webp_old_uri $base.$2$webp_suffix;
set $root "FULL PATH OF wp-content PARENT";
root $root;
add_header Vary Accept;
if ( !-f $root$webp_uri ) {
add_header X_WebP_SP_Miss $root$webp_uri;
}
try_files $webp_uri $webp_old_uri $uri =404;
}
检查nginx -t
,一切正确。但是在 devtool/network 选项卡中,图像类型仍然是 jpg。这是为什么?
解决方案
不确定 Shortpixel 的逻辑是如何工作的,但如果它正在拦截来自客户端的 GET 请求,您可能会在开发工具的网络日志中看到原始文件类型。
检查响应头,如果你看到了content-type: image/webp
,你就会知道它正在工作。
另外,您是否手动将 webp 图像添加到文件夹中?如果是这样,请尝试删除它们并重新执行 Shortpixel 过程。我相当确定 Shortpixel 会自动转换并添加图像本身。
事实上,在寻找一秒钟之后,您应该不必触摸外壳来使用 Shortpixel。它表面上是为非技术用户设计的。
如果您仍然卡住,请检查以下内容:
- API 密钥是否有效/正确实施?
- MIME 与 Wordpress 冲突
- 内容安全政策
最后,Shortpixel 是一项付费服务。他们的客户支持绝对应该处理这个问题。如果不是,请丢弃它们。无论如何,有许多更轻量级的方法来提供 WebP 图像。
希望这可以帮助其他人解决问题。
推荐阅读
- ruby - 如何重置 Ruby 和 RubyGems / 路径变量?我在尝试修复和发布 Jekyll 和 Bundler 时安装了多个版本
- java - 配置 Java contextPath 以接受动态值
- sql - 从左侧获取所有内容以在右侧重复
- jquery - jQuery Cookie 需要有唯一的名称
- python - 在 Pandas 数据框中,按列值中具有不同长度前缀和不一致分隔符的公共前缀对数据进行分组和求和
- yolo - YOLOv3 的真正架构(层)是什么?
- python - 如何从 JSON 文件中提取数据
- gitlab - Gitlab-CI 和管道:如何基于合并的分支事件触发管道?
- c# - 当验证在 ASP.net MVC 中可见时使标签可见
- excel - 如何计算来自 VLOOKUP 功能的某些文本?