gpt4 book ai didi

apache - 如果 UA 请求它,则使用 mod_negotiation 为 webp 提供服务

转载 作者:行者123 更新时间:2023-12-04 12:43:08 26 4
gpt4 key购买 nike

关闭。这个问题是off-topic .它目前不接受答案。












想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。

10年前关闭。




Improve this question




如果浏览器支持,是否可以使用 mod_negotiation 提供 webp 图像,否则使用 jpg?

例如,如果我链接到路径为/images/test 的图像,如果 UA 知道 webp,它会提供在/images/test.webp 中找到的图像,否则为 jpg?

我试过四处寻找,但似乎 Chrome 中的 Accept header 至少看起来像 Accept:*/* ,而不是指定图像类型。

如果这不是方法,有没有人有其他建议?

最佳答案

为了提供 WebP 图像,我在 nginx 中使用了重写规则来检查文件是否存在以及是否支持 WebP 图像。由于 OP 提到了 mod_negotiation,我将它移植到了 Apache mod_rewrite。重写查找包含单词“chrome”的用户代理,然后检查具有与 .jpg 或 .png 文件相同名称和路径的 .webp 扩展名的文件,如果是,则提供 WebP 文件。重写规则有点笨拙,但它可以完成工作。

AddType image/webp .webp
# strip the extension off of all JPGs
RewriteCond %{HTTP_USER_AGENT} (chrome) [NC]
RewriteRule (.*)\.jpg$ $1

#check for a webp file, if so serve it
RewriteCond %{REQUEST_FILENAME}.webp -f
RewriteRule (.*) $1.webp [E=WEBP:1]

#check for if we did not have a webp file and we do have a jpg, if so serve it
RewriteCond %{REQUEST_FILENAME}.jpg -f
RewriteCond %{REQUEST_FILENAME}.webp !-f
RewriteRule (.*) $1.jpg

# strip the extension off of all PNGs
RewriteCond %{HTTP_USER_AGENT} (chrome) [NC]
RewriteRule (.*)\.png$ $1

#check for a webp file, if so serve it
RewriteCond %{REQUEST_FILENAME}.webp -f
RewriteRule (.*) $1.webp [E=WEBP:1]

#check for if we did not have a webp file and we do have a png, if so serve it
RewriteCond %{REQUEST_FILENAME}.png -f
RewriteCond %{REQUEST_FILENAME}.webp !-f
RewriteRule (.*) $1.png

对于我的网站,在我可以检测到浏览器中对 WebP 的支持后,我可以通过 JavaScript 加载我的照片,而不是依赖于用户代理字符串。如果存在 WebP 支持,那么我会在开始加载图像之前设置 cookie。因此而不是这个 RewriteCond
RewriteCond %{HTTP_USER_AGENT} (chrome) [NC]

我会用这个
RewriteCond %{HTTP_COOKIE} supports_webp

关于apache - 如果 UA 请求它,则使用 mod_negotiation 为 webp 提供服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6010253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com