Azure App Service中web.config设置文件ETag的等效配置方法
Azure App Service 对应web.config等效配置
要实现Apache中.htaccess里针对JPG/JPEG文件设置ETag(基于修改时间和大小)并阻止浏览器缓存的效果,Azure App Service(基于IIS)可以通过web.config做如下配置:
<configuration> <system.webServer> <!-- 控制静态文件缓存,阻止浏览器长期缓存 --> <staticContent> <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:00" /> <!-- 确保JPG/JPEG的MIME类型配置正确 --> <remove fileExtension=".jpg" /> <remove fileExtension=".jpeg" /> <mimeMap fileExtension=".jpg" mimeType="image/jpeg" /> <mimeMap fileExtension=".jpeg" mimeType="image/jpeg" /> </staticContent> <!-- 自定义ETag生成规则,和Apache的MTime+Size逻辑对齐 --> <rewrite> <outboundRules> <rule name="Set JPG/JPEG ETag" preCondition="IsJPGFile"> <match serverVariable="RESPONSE_ETag" pattern=".*" /> <action type="Rewrite" value="{LAST_MODIFIED}_{CONTENT_LENGTH}" /> </rule> <preConditions> <preCondition name="IsJPGFile"> <add input="{REQUEST_FILENAME}" pattern="\.(jpg|jpeg)$" ignoreCase="true" /> </preCondition> </preConditions> </outboundRules> </rewrite> </system.webServer> </configuration>
关键说明:
- 缓存控制:
<clientCache>节点设置cacheControlMaxAge="00:00:00",让浏览器每次请求都验证文件,达到阻止长期缓存的目的。 - ETag对齐:通过URL重写的出站规则,用文件的修改时间(
LAST_MODIFIED)和大小(CONTENT_LENGTH)生成ETag,完全对应Apache里FileETag MTime Size的逻辑。其实IIS默认的ETag就是基于这两个值生成的,不过用规则可以明确自定义格式,避免环境差异。 - MIME类型处理:移除并重新注册JPG/JPEG的MIME类型,避免潜在的配置冲突问题。
如果你的站点是.NET应用,注意把这段配置和现有web.config的system.webServer节点合并,不要出现重复节点。
内容的提问来源于stack exchange,提问作者Douglas Woods
相关产品推荐
相关产品推荐

