使用IIS 7.5的高速caching控制头

我试图围绕客户端(networking浏览器)caching,以及它如何工作与IIS 7.5caching控制标头有关。

尤其是:

  1. 如果我们要强制客户端重新加载caching的资源,IIS必须如何configuration?

  2. 如果服务器上的资源具有更新的修改date(或ETag值),我们是否需要立即设置到期网页内容?

  3. 现在我们不设置任何caching标题。 因此,如果我设置了no-cache的caching头(我认为这相当于立即将网页内容过期),这将强制网页浏览器获取特定文件的新版本。 或者,浏览器只会在它认为当前的拷贝过期之后才请求一个新的版本,然后从这一点开始不caching呢?

最好的做法是将caching控制标志设置为1周,然后在我知道要进行更改之前的8天将caching控件设置为例如30分钟?

但是,如果我这样做,然后需要立即从用户caching中过期的项目,因为有一个问题,我该怎么做?

理解客户端/用户代理caching的一种方法是将浏览器视为为自己实现中间caching(事实上, Cache-Control: private )。 这将所有术语抽象为简单的请求和响应模式,在大多数情况下,浏览器caching的行为与代理或中间caching相同。 在阅读IETF RFC 2616有关该主题的权威性文档时,请牢记这一点很有帮助: http : //www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 。

  1. http://technet.microsoft.com/en-us/library/cc770661(v=ws.10).aspx中所述,将“Expires”标头设置为“Immediately”(发送Cache-Control: no-cache )和http://msdn.microsoft.com/en-us/library/ms689443(v=vs.90).aspx 。

  2. 不可以。如果您不发送任何Cache-Control标头,则IIS应发送最新版本的资源,客户端应从Last-Modified标头或ETag中识别该标头。

  3. 你的第一条语句是正确的:发送no-cache将指示客户端每次请求资源,即使它已经caching了它。 有些客户端无论如何都会错误地caching这些资源,但是您也可以使用must-revalidate来确保获得新的副本

至于最佳实践,caching多长时间取决于您的应用程序和用户需求。 您可以始终发送Cache-Control: must-revalidate来解决所提到的问题,因此不需要全局更改caching过期。