客户端从服务器请求数据经历如下基本步骤:
1、如果请求命中本地缓存则从本地缓存中获取一个对应资源的"copy";
2、检查这个"copy"是否fresh,是则直接返回,否则继续向服务器转发请求。
3、服务器接收到请求,然后判断资源是否变更,是则返回新内容,否则返回304,未变更。
4、客户端更新本地缓存。
no-cache的作用是:强制客户端跳过步骤2,直接向服务器发送请求。也就是说每次请求都必须向服务器发送。
must-revalidate:作用与no-cache相同,但更严格,强制意味更明显。但
这只是理论上的描述,根据我在ff6上的测试,它几乎不起作用:只要请求的频率加快到一定程度,服务器就接收不到请求。
no-store:缓存将不存储response,包括header和body。测试结果表明,除每次请求都必发送到服务器外,响应代码均是200,且request并没有发送"If-Modified-Since"和"If-None-Match"头,这意味着缓存的确没有存储response。
以上三者都是要求客户端每次请求都必须到服务器进行revalidate,此功能还可以通过max-age实现:
Cache-Control:max-age=0
测试结果证明了这一点,每次都请求了服务器,且状态码是304。
<META HTTP-EQUIV="Cache-control" CONTENT="no-cache">
这种设置方式大部分服务器不支持,额外的解析成本、只支持html文件等原因造成的结果是,它基本上是无效的。
分享到:
相关推荐
Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate Pragma: no-cache Expires: 0 您可以在阅读有关上这些响应标头的更多信息。 创建此插件的原因是,需要一种简便的方法来禁用客户端缓存,...
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"> ``` 然而,`meta`标签的缓存控制作用通常不如HTTP头信息强大,因为它们只能影响到浏览器的缓存行为,而不能影响到中间缓存...
- Cache-Control: max-age=0, no-cache, no-store, must-revalidate - Pragma: no-cache - Expires: Sat, 01 Jan 2000 00:00:00 GMT - Content-Type: text/html;charset=UTF-8 4. **其他信息** - 本机IP地址:...
请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age...
- **must-revalidate**:缓存必须在数据过期后重新验证才能返回。 - **proxy-revalidate**:指示代理必须在数据过期后重新验证才能返回。 #### HTTP Keep-Alive机制 HTTP的Keep-Alive功能使客户端与服务器之间的...
- **no-store**:禁止缓存存储任何部分的数据。 - **max-age=**:指定缓存数据的有效时间。 - **max-stale[=]**:允许缓存返回已过期的响应,可选参数定义了响应可以过期多久。 - **min-fresh=**:定义响应在变成...
请求时的缓存指令包括 no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括 public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-...
HTTP头部的`Cache-Control`字段是HTTP协议中用于控制缓存行为的重要机制,它为客户端和服务器之间的数据传输提供了更多的灵活性和效率。本文将深入解析`Cache-Control`字段的含义、作用及其各种指令,帮助你更好地...
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // IE兼容性处理 response.setHeader("Pragma", "no-cache"); %> ``` 这段代码的作用是: - `response.setDateHeader("Expires...
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); ``` #### 六、文件下载 当需要用户下载文件而不是在浏览器中显示时,可以通过...
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1 response.setHeader("Pragma", "no-cache"); // HTTP 1.0 response.setDateHeader("Expires", 0); // Proxies. ``` ...
Cache-Control 的值可以是 public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age 等。 三、清除浏览器缓存的方法 有时候我们需要清除浏览器缓存,因为缓存可能误事,...
- **响应时**:`public`(公开缓存)、`private`(私有缓存)、`no-cache`、`no-store`、`no-transform`(禁止转换)、`must-revalidate`(必须重新验证)、`proxy-revalidate`(代理必须重新验证)、`max-age`、`s...
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"> ``` 5. **`Refresh`**:指定页面在多少秒后刷新或重定向到另一个URL。 ```html <meta http-equiv="Refresh" content="5; ...
1. Cache-Control:用于控制缓存机制,包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age 和 s-maxage 等取值。 2. Connection:用于指定是否继续保持与服务器的...
本文实例讲述了YII框架http缓存...header('Cache-Control: no-store, no-cahe, must-revalidate'); //ie专用 header('Cache-Control: post-chedk=0, pre-check=0', false); //for HTTP/1.0 header('Pragma: no-cache
<parameter name="responseHeaders">Cache-Control: private, no-store, no-cache, must-revalidate, max-age=0</parameter> <parameter name="cacheControl">private, no-store, no-cache, must-revalidate, max-...
对于通过HTTP协议访问的Vue项目,通常后端服务器会在响应的Header中设置expires或Cache-Control来控制前端缓存。例如,当Cache-Control设置为max-age=0时,表明浏览器不应缓存该资源。然而,由于浏览器缓存的行为...
**Cache-Control**:控制缓存的行为,常见的值包括: - **no-cache**:强制客户端在使用缓存数据之前必须先和服务器验证该数据是否有效。 - **no-store**:强制客户端不保存任何缓存副本。 - **max-age=**:缓存的...
("Cache-Control", "no-cache, no-store, must-revalidate"); %> ("Pragma", "no-cache"); %> ("Expires", 0); %> ``` 这些指令告诉浏览器不要缓存该页面。 2. **服务器端缓存**:在JSP应用中,服务器端可能...