网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况:
(1) 打开新窗口
如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:
Cache-control: max-age=5
表示当访问此网页后的5秒内再次访问不会去服务器
(2) 在地址栏回车
如果值为private或must-revalidate(和网上说的不一样),则只有第一次访问时会访问服务器,以后就不再访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。
(3) 按后退按扭
如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问
(4) 按刷新按扭
无论为何值,都会重复访问
项目中使用过滤器来设置网页的缓存
FilterConfig fc;
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
// set the provided HTTP response parameters
for (Enumeration e = fc.getInitParameterNames(); e.hasMoreElements();) {
String headerName = (String) e.nextElement();
response.addHeader(headerName, fc.getInitParameter(headerName));
}
// pass the request/response on
chain.doFilter(req, response);
}
配置文件的配置:
<filter>
<filter-name>NoCache</filter-name>
<filter-class>filter.CacheFilter</filter-class>
<init-param>
<param-name>Cache-Control</param-name>
<param-value>no-cache, must-revalidate</param-value>
</init-param>
</filter>
<filter>
<filter-name>CacheForWeek</filter-name>
<filter-class>filter.CacheFilter</filter-class>
<init-param>
<param-name>Cache-Control</param-name>
<param-value>max-age=604800</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CacheForWeek</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheForWeek</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheForWeek</filter-name>
<url-pattern>*.gif</url-pattern>
</filter-mapping>
上述设置保存了1周的缓存。
分享到:
相关推荐
- **缓存控制**:提供了更强大的缓存控制机制,如`Cache-Control`头字段,帮助优化资源的缓存行为。 - **虚拟主机**:通过Host头字段支持在同一IP地址上托管多个网站。 - **请求方法扩展**:除了基本的GET和POST方法...
- **缓存控制**:通过`Cache-Control`头控制缓存行为。 - **条件GET请求**:利用实体标签和最后修改时间进行条件GET请求,以减少不必要的数据传输。 #### 六、总结 **RFC 2616**定义了HTTP/1.1协议的核心特性和...
3. **缓存机制**:HTTP/1.1引入了更强大的缓存控制策略,通过Cache-Control和ETag等头部字段,客户端可以判断资源是否已经更新,避免不必要的网络传输。 4. **范围请求**:如果一个大文件需要更新,HTTP/1.1允许...
HTTP/1.1引入了一系列新的缓存控制指令,包括`Cache-Control`、`Expires`等,以支持更高效的数据缓存机制。这些机制有助于减少网络负载,提高用户体验。 #### 错误处理 HTTP/1.1规定了一套完整的错误处理机制,...
`Cache-Control`头字段是在HTTP/1.1中引入的,用于替代或扩展早期HTTP版本中的`Pragma`头。它的设计目标是增强缓存机制的可控性,允许开发者精确地指定资源的缓存策略,从而优化网络性能,减少不必要的网络请求。 ...
7. 缓存机制:HTTP/1.1支持缓存,通过Cache-Control、ETag、If-None-Match等首部字段来控制缓存的使用,提高响应速度并减少网络负载。 8. 安全与身份验证:HTTP/1.1引入了安全和身份验证机制,如基本认证(Basic ...
HTTP/1.1 消息头详解 HTTP/1.1 消息头是 HTTP 协议中的一种机制,用于在客户端和...了解 HTTP/1.1 消息头的知识点,可以帮助我们更好地理解 HTTP 协议的工作机制,并且可以更好地实现客户端和服务器之间的数据传输。
- `Pragma:no-cache`是HTTP 1.0时代的缓存控制,对HTTP 1.1服务器无效。但在安全连接(HTTPS)上,IE会尊重这个指令,不缓存响应。 5. **HTTP响应头的其他指令** - `header`函数在PHP中用于设置HTTP响应头,例如...
4. **缓存机制**:HTTP1.1引入了更复杂的缓存控制策略,通过Cache-Control和ETag等头部字段,增强了缓存的有效性和灵活性。 5. **更多请求方法**:除了基本的GET、POST方法,HTTP1.1还添加了PUT、DELETE、HEAD、...
此外,HTTP/1.1还引入了一些性能优化机制,如缓存控制(Cache-Control),使客户端可以存储和重用先前获取的响应;分块传输编码,允许大对象在未知总大小的情况下进行传输;以及内容编码(Content-Encoding),如...
此外,HTTP/1.1引入了缓存机制,通过Cache-Control和ETag等报头来控制资源的缓存策略,减少不必要的网络传输,提高响应速度。代理服务器和高速缓存(Cache)的使用也得以规范化,它们可以在客户端和服务器之间存储和...
合理设置Cache-Control头部信息中的max-age参数可以有效减少不必要的网络往返时间。同时,利用Last-Modified和If-Modified-Since等字段进行条件性GET请求也是提高性能的有效手段之一。 #### 减少HTTP请求次数 页面...
- HTTP/1.1加强了缓存控制,提供了`Cache-Control`头字段,可以精确控制资源是否可缓存、缓存有效期等。 - `ETag`和`If-None-Match`用于验证缓存是否过期,`Last-Modified`和`If-Modified-Since`则提供了基于时间...
9. **缓存控制**:通过Cache-Control、ETag、If-None-Match等首部,增强了缓存机制,减少了不必要的网络传输。 10. **安全与身份验证**:引入了Basic认证、Digest认证以及HTTPS(HTTP over SSL/TLS)来增强安全性。...
- **缓存控制**:通过设置缓存控制头(如`Cache-Control`和`Expires`),可以控制缓存的行为。 - **验证器**:通过使用条件请求(如`If-Modified-Since`和`ETag`),可以避免不必要的数据传输。 - **代理服务器**:...
##### 2.4 缓存控制(cache control) 为了提高效率并减少带宽消耗,HTTP/1.1 引入了缓存控制机制,允许服务器和客户端通过特定的头部信息协商缓存策略,比如设置缓存的有效期等。 ##### 2.5 多种请求方法 HTTP/1.1 ...
### HTTP 1.1协议详解 #### 一、概述与背景 HTTP(HyperText Transfer Protocol)作为互联网上应用最广泛...通过对HTTP/1.1的理解,开发者可以更好地设计和实现网络应用程序,同时也能更深入地理解互联网的工作原理。
7. **缓存控制**:HTTP/1.1提供了更精细的缓存机制,如`Cache-Control`和`ETag`头,允许浏览器判断是否需要重新请求资源,从而减少不必要的网络通信。 然而,尽管HTTP/1.1进行了许多优化,它仍然存在一些性能限制,...
响应头则包含服务器返回的信息,如Server标识服务器软件,Content-Type表示响应体的类型,Cache-Control控制缓存策略。 5. **状态码**:HTTP响应中包含三位数字的状态码,如200表示成功,404表示未找到,500表示...