我的网站是一个静态网站,我从IIS 8网络服务器提供内容。我曾经使用Apache,我有以下配置用于缓存清除,我想在IIS中实现:
# Extend cache expiry for fingerprinted URLs
RewriteCond %{QUERY_STRING} ^[0-9a-fA-F]{8,}$
RewriteRule ^ - [E=revved:1]
然后我根据环境变量“revved”是否设置来设置Cache-Control:
# (For HTTP/1.1 clients)
Header set Cache-Control "max-age=1200" env=!revved
Header set Cache-Control "max-age=31536000" env=revved
我的JS和CSS是捆绑的,我将哈希附加到查询字符串。我对图像做同样的事情。
到目前为止,我可以使用<clientCache />
元素并附加cacheControlMode="UseMaxAge
和cacheControlMaxAge="00:20:00"
。
您在Apache配置中看到的是,当设置“revved”变量时,代理服务器(CDN)和客户端应该将文件缓存365天。否则,它应该只缓存20分钟。我想在我的web.config中使用相同的行为。
我在IIS中读到了“输出缓存”,但据我所知,它是为使用PHP或ASP的动态页面而设计的。
如果有人能引导我朝着正确的方向前进,我将非常感激。
答案 0 :(得分:0)
我相信我想出了一个有效的解决方案。我在MSDN&#34; Change or modify a Response Header value using URL Rewrite&#34;。
上的这篇文章中得到了一些提示<outboundRules>
<rule name="ChangeCacheControlHeaderOneYear">
<match serverVariable="RESPONSE_CacheControl" />
<conditions>
<add input="{QUERY_STRING}" pattern="^[0-9a-fA-F]{8,}$" />
</conditions>
<action type="Rewrite" value="max-age=31536000" />
</rule>
<rule name="ChangeCacheControlHeader20Minutes">
<match serverVariable="RESPONSE_CacheControl" />
<conditions>
<add input="{QUERY_STRING}" pattern="^[0-9a-fA-F]{8,}$" negate="true" />
</conditions>
<action type="Rewrite" value="max-age=1200" />
</rule>
</outboundRules>