wordpress - 如果浏览器在 IIS 中支持,则有条件地提供 webp 图像
问题描述
如果浏览器支持,则提供 webp 图像而不是 jpeg 和 png 似乎在使用 .htacess 文件和 apache 时是可能的。
我从来没有设法让它与 IIS 一起工作。我通常使用 WordPress 作为我选择的 CMS,并且有一些 WordPress 插件可以自动 webp 转换现有上传的图像并包括重定向,但是重定向/条件检测不适用于开箱即用的 IIS。
我已经做好了所有必要的准备,比如在 IIS 中允许 webp 扩展和 MIME。加载现有的 webp 文件不是问题,我只是不想在使用 IE11 和 Safari 等劣质浏览器时加载 webp 版本,因为它不会显示任何内容。互联网上有大量指南解释如何在 IIS 中启用 webp 支持,但我设法找到了 0 篇文章如何在现实生活场景中实际使用它,即网站必须在 IE11 和 Safari 中正确显示。
解决方案
您需要将webp
-urls 重定向到备用jpeg
-urls。
根据URL Rewrite Module Configuration Reference,可以使用类似于以下的规则来完成
<rules>
<rule name="Some name" stopProcessing="true">
<match url="^(.*)\.webp$" />
<conditions>
<add input="{HTTP_USER_AGENT}" pattern="*MSIE*" />
</conditions>
<action type="Redirect" url="{R:1}.jpeg" redirectType="Permanent" />
</rule>
</rules>
我没有IIS,也没有IE,所以无法测试。
此外,如果您的后备图像具有不同的扩展名,则取决于您想出一种方法来决定哪些webp
图像映射到jpeg
url,哪些映射到png
. 或者您可以选择将jpeg/png
-urls 重定向到webp
-urls。
推荐阅读
- angular - 将嵌套的 forkjoins 返回为 observable
- firebase - Firebase 函数中为数据库触发器传递的数据是否计入传出带宽?
- vue.js - vue-router 不渲染组件,但在 this.$router.push 上更改 url
- c++ - Constexpr constructible function object
- javascript - Echart Custom label in sunburst chart
- javascript - VueJS 和 Keep-Alive:为什么会出现控制台错误?
- apache - Apache 将数值参数重写为 Root
- php - Using Jquery .each function in a PHP foreach loop
- javascript - 事件渲染前如何获取道具
- django - Django 生成条形码并保存到图像字段中