我正在通过asp.net中的HTTPModule提供一些文件。我想知道将Cache-Control标头设置或不设置为某些东西(如无缓存)是否有任何好处?
编辑:我对此感到好奇的原因是因为我们遇到了一个问题,即在IE中的SSL会话上提供office文档会导致错误(Cache Control设置为no) -cache)。也就是说,如果已将Cache-Control设置为no-cache,则无法在IE中通过SSL下载office文档。
基本上我不想包含Cache-Control标头,但想知道它是否会导致问题?
编辑2:好吧,Cache-Control标头已经用完了。我尝试了下面的建议,但遇到了一些问题。每当我添加一个过期标题或根本改变Cache-Control时,当我尝试打开Office 2007文档时,它会尝试将其作为zip打开。 (我知道它们真的是封装下的zip文件)但是当我不使用expires头文件或缓存控件时,IE就像Office文档一样打开它们。不幸的是,我没有时间尝试解决所有问题 - 因为代码冻结是从现在开始的十分钟:)
感谢大家的帮助!
答案 0 :(得分:3)
更新:根据您的评论,您似乎正在尝试阻止缓存。我会用:
Cache-Control: max-age=0
对我来说,它比使用Expires标题更简单,更明确。
更新2 :听起来您需要为office文档指定Content-Type标头。尝试使用以下内容:
Content-Type: application/octet-stream
答案 1 :(得分:1)
您可以尝试将Cache-Control
标头设置为过去的日期/时间,而不是使用Expires
。
答案 2 :(得分:1)
这绝对是一个奇怪的问题......但这里的快速解决方案可能会阻止您的用户收到过时的内容:
如果在URL的末尾附加一个额外的querystring参数,以使每个Office文件请求都是唯一的,那么您可以在不在标题中设置缓存控制信息的情况下离开。
您当前的网址可能如下所示:
http://mysite.com/filegetter?name=document.doc
使用额外的“唯一”参数:
http://mysite.com/filegetter?name=document.doc&ts=
这将阻止浏览器为您的用户提供陈旧的office文件,并且该方法可以在客户端或服务器代码中实现。处理将文件发送回用户的模块只是忽略了使用户浏览器独有的URL部分。
答案 3 :(得分:0)
我必须使用“no-store”来successfully render PDF files inside IE6 with no caching。