如何在IIS 10上配置缓存?

ki0zmccv  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(199)

我有一个网站,我已经启用缓存如下:

  • 已为服务器启用缓存
  • 我正在测试的网站已启用缓存
  • 在响应标题中,我为整个网站设置了30天后的网页内容过期(没有为任何特定文件夹设置)
  • 为文件.css、.js、.png、.woff2启用缓存
  • 在Chrome中以隐身模式浏览网站

截图:
100d 1xx 1c 1d 1xx 1c 2d 1x的字符串

当我浏览我的网站时,第一次应该加载所有文件,但如果我刷新页面,文件应该从缓存加载,而不是这样(下面的截图)。在文件的响应头中,我有:

  • 缓存控制:无缓存,最大年龄=2592000
  • 内容编码:gzip内容长度:30116内容类型:
  • application/JavaScript date:Sun,08 Mar 2020 04:31:20 GMT etag:
  • “80 b55 a25 ef 1d 51:0”最后修改:Tue,03 Mar 2020 13:21:23 GMT
  • 服务器:Microsoft-IIS/10.0状态:200变化:接受编码

有谁知道怎么解决这个问题吗?
谢谢干杯,


eqqqjvef

eqqqjvef1#

看起来你同时启用了clientcache和服务器端输出缓存。根据你的描述,在这种情况下只需要客户端缓存。
因此,请从IIS配置中删除输出缓存规则。
我们只需要设置<clientcache>部分

<staticContent>
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
</staticContent>

字符串


的数据
此外,请确保您的Web浏览器已启用客户端缓存。否则,静态文件将永远不会被缓存。
当然,失败的请求跟踪会告诉我们该高速缓存控制头是如何生成的。
https://learn.microsoft.com/en-us/iis/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iis

thtygnil

thtygnil2#

有点晚了,但这是我解决这个问题的方法。
您可以使用重写规则来完成此操作。首先,您需要支持IIS 10的模块:https://www.iis.net/downloads/microsoft/url-rewrite
创建一个空白的缓存规则,并给予一个名称,如“可缓存文件”。
创建一个新的前置条件并将其命名为“IsCacheableFile”。使用正则表达式并将“{RESPONSE_CONTENT_TYPE}”用于条件输入,其中包含要为. x1c 0d1x自定义缓存的mime类型的正则表达式
使用变量“RESPONSE_CACHE_CONTROL”和匹配模式“.*"将匹配范围设置为“Server Variable”。
对于该操作,将类型设置为“重写”并输入要实现的该高速缓存值,例如“max-age=3600”。启用“替换现有服务器变量值”复选框。



前:

后:

**注意:**如果当前正在缓存文件,则必须强制刷新。

相关问题