RC1的MVC框架浏览器缓存问题

时间:2009-03-03 15:13:19

标签: asp.net-mvc caching

在RC1的最新项目中,我注意到我有这个浏览器缓存问题,我无法动摇。这就是我的标题看起来像

HTTP/1.1 200 OK
Date: Tue, 03 Mar 2009 15:11:34 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 1.0
Cache-Control: private
Expires: Tue, 03 Mar 2009 15:11:34 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 4614

从技术上讲,如果这是私有的,那么内容上应该没有过期日期吗?我也尝试过no-cache和相同的结果。有人对这个特殊问题有经验吗?

2 个答案:

答案 0 :(得分:3)

Cache-Control:private仅指定响应仅供单个用户使用,不应存储在共享缓存中(例如,在代理中)并用于为其他用户提供请求。我没有在协议文档中看到任何会阻止使用带有值的Expires头的内容。实际上,说“仅用于此用户的后续请求,但在此之后不会这样做”似乎是完全合理的。 Cache-Control还有其他值,其中Expires可能没有意义,但我相信该协议有一种消除冲突头之间歧义的方法(参见协议文档的第4节)。

引自HTTP 1.1 protocol文档的第16.2节:

  

私有

  Indicates that all or part of the response message is intended for
  a single user and MUST NOT be cached by a shared cache.  This
  allows an origin server to state that the specified parts of the
  response are intended for only one user and are not a valid
  response for requests by other users.  A private (non-shared)
  cache MAY cache the response.

  Note: This usage of the word private only controls where the
  response may be cached, and cannot ensure the privacy of the
  message content.

答案 1 :(得分:1)

没有理由不能缓存私有内容,只是它应该只在当前用户上下文中由浏览器缓存,它不应该是缓存服务器端,也不应该是其他缓存,例如代理服务器。 / p>