背景
客户正在运行我们的Web应用程序.因为响应包含HTTP Cache-Control:no-cache
指令,所以当他们试图查看PDF/Excel/word文件时,通过HTTPS并且正在运行到(相当熟知的)IE8"文件无法写入缓存"错误.问题是,添加此指令不是我们的应用程序(或其配置).
经过一番调查后,我发现IIS7页面输出缓存功能也可以添加此标头
<caching enabled="false" enableKernelCache="false">
<profiles>
<add extension=".htm" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
</profiles>
</caching>
Run Code Online (Sandbox Code Playgroud)
将具有添加Cache-Control:no-cache, private
到响应标头的效果.
我的问题
但令人惊讶的(IMO)事情是,即使您假定禁用该功能(请参阅我上面的配置代码段enabled="false"
),仍会发送响应标头Cache-Control:no-cache, private
.
我是多么愚蠢而对此感到惊讶(我想我可能是)?
有效地摆脱了什么no-cache
对我来说是增加location="Any"
的add
元素,这反而写道Cache-Control:public
:
<caching enabled="false" enableKernelCache="false">
<profiles>
<add extension=".htm" ... location="Any" />
</profiles>
</caching>
Run Code Online (Sandbox Code Playgroud)
如果没有该location
属性,IIS默认为Cache-Control:no-cache
.其他可能的值是Client
,Downstream
,Server
,或ServerAndClient
.细节在这里.
你并不孤单:http://forums.iis.net/t/1152306.aspx
我们也遇到了同样的问题.我没有找到任何关于这个"功能"的文档,所以我假设它是一个bug.
我们决定只删除缓存标记,而只使用clientCache标记.
归档时间: |
|
查看次数: |
6292 次 |
最近记录: |