Lon*_*est 5 iis-7.5 http-headers
在IIS 7.5中,当我没有启用输出缓存时,我的php脚本在Cache-Control标头中成功设置了浏览器缓存:
缓存控制:max-age = 43200,public
Content-Type:text/html
Expires:Wed,30 May 2012 22:15:18 GMT
Server:Microsoft-IIS/7.5
X-Powered-By:PHP/5.4.3
日期:Wed,30 May 2012 10:15:18 GMT
Connection:close
Content-Length:5105
但是,如果我为.php文件启用输出缓存,我会得到以下标头:
Cache-Control:no-cache,max-age = 43200,public
Content-Type:text/html
Expires:Wed,30 May 2012 22:25:34 GMT
Server:Microsoft-IIS/7.5
X-Powered-By:PHP/5.4.3
日期:星期三,2012 5月30日10点25分34秒GMT
连接:关闭
(在我的php脚本工作之前,注意"no-cache"被添加到Cache-Control中)
我发现,如果为文件类型启用了输出缓存,则无法阻止将"no-cache"添加到Cache-Control键.我试过在web.config文件中这样做:
<customHeaders>
<remove name="X-Powered-By" />
<remove name="Cache-Control" />
<add name="Cache-Control" value="public" />
</customHeaders>
Run Code Online (Sandbox Code Playgroud)
这不起作用.为什么这必须如此相互排斥?我想同时启用输出缓存和浏览器缓存.
遗憾的是,IIS管理器界面不允许您使用输出缓存模块支持的所有功能.其中一个功能是设置间接控制缓存控制头的缓存位置.您必须手动编辑web.config才能更改它.语法如下:
<caching>
<profiles>
<add extension=".php" ..... location="Any" />
</profiles>
</caching>
Run Code Online (Sandbox Code Playgroud)
该<add />标签将取决于你希望你的缓存工作有更多的选择.重要的是添加location="..."属性.支持以下值,它们控制缓存控制标头,如下所示:
Any或Downstream=public
ServerAndClient或Client=private
None或者Server=空=no-cache
由于location默认情况下该属性不存在,因此IIS将Cache-Control: no-cache在启用输出缓存时默认发送标头.有关输出缓存和支持的功能的更多信息,请参见:IIS7中的响应缓存