vto*_*ola 7 caching http http-caching
我对这个标题感到Cache-Control:must-revalidate困惑,我已经读过,在提供缓存项目之前,有必要使用源验证所有请求,但只是陈旧的?或者无论陈旧还是新鲜?我在不同的地方读过这两件事.
有什么区别Cache-Control:no-cache?因为这些标题看起来与我相同.
更新1:我从一本书中读到了这个:
的
Cache-Control: must-revalidate响应报头告诉缓存绕过新鲜度计算机构和重新验证在每次访问:
@Peter O.指出了RFC所说的内容.所以那本旧书是错的.
更新2:在本教程中:http://www.mnot.net/cache_docs/
no-cache- 强制缓存每次在释放缓存副本之前将请求提交到源服务器进行验证.这有助于确保认证(与公众结合),或保持严格的新鲜度,而不会牺牲缓存的所有好处.
must-revalidate- 告诉缓存他们必须遵守你给他们的关于表示的任何新鲜度信息.HTTP允许缓存在特殊条件下提供陈旧的表示; 通过指定此标头,您告诉缓存您希望它严格遵循您的规则.
Pet*_* O. 10
HTTP/1.1的第14.9.4节:
当高速缓存接收到的响应中存在must-revalidate指令时,该高速缓存必须在该条目变为陈旧后 才能响应后续请求而不首先使用源服务器重新验证它
HTTP/1.1的第14.8节:
如果响应包含"must-revalidate"缓存控制指令,则缓存可以在回复后续请求时使用该响应.但是如果响应是陈旧的,那么所有的缓存必须首先用原始服务器重新验证它...
因此,如果must-revalidate收到,只有过时的响应才会被重新验证
.
对于no-cache,请参阅第14.9.1节:
如果no-cache指令没有指定字段名称[这里就是这种情况],那么缓存不得使用响应来满足后续请求而不成功重新验证源服务器...
因此,no-cache适用于新鲜和陈旧的回应.
编辑:
这句话可能与此相关(第13.3节):
当缓存具有要用作对客户端请求的响应的陈旧条目时,它首先必须检查源服务器 (或者可能是具有新响应的中间缓存)以查看其缓存条目是否仍然可用.
因此,must-revalidate当缓存具有中间缓存时,可能是相关的,否则缓存可以检查中间缓存以获得新响应,而不是直接检查源服务器.
| 归档时间: |
|
| 查看次数: |
8556 次 |
| 最近记录: |