我有一个网站,我已经启用缓存如下:
- 已为服务器启用缓存
- 我正在测试的网站已启用缓存
- 在响应标题中,我为整个网站设置了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变化:接受编码
有谁知道怎么解决这个问题吗?
谢谢干杯,
型
2条答案
按热度按时间eqqqjvef1#
看起来你同时启用了
clientcache
和服务器端输出缓存。根据你的描述,在这种情况下只需要客户端缓存。因此,请从IIS配置中删除输出缓存规则。
我们只需要设置
<clientcache>
部分字符串
的数据
此外,请确保您的Web浏览器已启用客户端缓存。否则,静态文件将永远不会被缓存。
当然,失败的请求跟踪会告诉我们该高速缓存控制头是如何生成的。
https://learn.microsoft.com/en-us/iis/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iis
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”。启用“替换现有服务器变量值”复选框。
的
前:
后:
**注意:**如果当前正在缓存文件,则必须强制刷新。