`
zznj1123
  • 浏览: 124057 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HTTP/1.1 Cache-Control的理解

阅读更多

 网页的缓存是由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周的缓存。

分享到:
评论

相关推荐

    超文本传输协议-HTTP/1.1

    - **缓存控制**:提供了更强大的缓存控制机制,如`Cache-Control`头字段,帮助优化资源的缓存行为。 - **虚拟主机**:通过Host头字段支持在同一IP地址上托管多个网站。 - **请求方法扩展**:除了基本的GET和POST方法...

    RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1

    - **缓存控制**:通过`Cache-Control`头控制缓存行为。 - **条件GET请求**:利用实体标签和最后修改时间进行条件GET请求,以减少不必要的数据传输。 #### 六、总结 **RFC 2616**定义了HTTP/1.1协议的核心特性和...

    HTTP超文本传输协议-HTTP/1.1中文版

    3. **缓存机制**:HTTP/1.1引入了更强大的缓存控制策略,通过Cache-Control和ETag等头部字段,客户端可以判断资源是否已经更新,避免不必要的网络传输。 4. **范围请求**:如果一个大文件需要更新,HTTP/1.1允许...

    rfc2616/HTTP/1.1中文版

    HTTP/1.1引入了一系列新的缓存控制指令,包括`Cache-Control`、`Expires`等,以支持更高效的数据缓存机制。这些机制有助于减少网络负载,提高用户体验。 #### 错误处理 HTTP/1.1规定了一套完整的错误处理机制,...

    http头部cache-control字段解析

    `Cache-Control`头字段是在HTTP/1.1中引入的,用于替代或扩展早期HTTP版本中的`Pragma`头。它的设计目标是增强缓存机制的可控性,允许开发者精确地指定资源的缓存策略,从而优化网络性能,减少不必要的网络请求。 ...

    http-1.1中文文档(115页word格式)

    7. 缓存机制:HTTP/1.1支持缓存,通过Cache-Control、ETag、If-None-Match等首部字段来控制缓存的使用,提高响应速度并减少网络负载。 8. 安全与身份验证:HTTP/1.1引入了安全和身份验证机制,如基本认证(Basic ...

    HTTP1.1消息头

    HTTP/1.1 消息头详解 HTTP/1.1 消息头是 HTTP 协议中的一种机制,用于在客户端和...了解 HTTP/1.1 消息头的知识点,可以帮助我们更好地理解 HTTP 协议的工作机制,并且可以更好地实现客户端和服务器之间的数据传输。

    Cache-control使用Cache-control:private学习笔记

    - `Pragma:no-cache`是HTTP 1.0时代的缓存控制,对HTTP 1.1服务器无效。但在安全连接(HTTPS)上,IE会尊重这个指令,不缓存响应。 5. **HTTP响应头的其他指令** - `header`函数在PHP中用于设置HTTP响应头,例如...

    中文HTTP1.1协议-RFC2616

    4. **缓存机制**:HTTP1.1引入了更复杂的缓存控制策略,通过Cache-Control和ETag等头部字段,增强了缓存的有效性和灵活性。 5. **更多请求方法**:除了基本的GET、POST方法,HTTP1.1还添加了PUT、DELETE、HEAD、...

    Http1.1协议pdf版

    此外,HTTP/1.1还引入了一些性能优化机制,如缓存控制(Cache-Control),使客户端可以存储和重用先前获取的响应;分块传输编码,允许大对象在未知总大小的情况下进行传输;以及内容编码(Content-Encoding),如...

    HTTP超文本传输协议-HTTP1.1中文版.doc

    此外,HTTP/1.1引入了缓存机制,通过Cache-Control和ETag等报头来控制资源的缓存策略,减少不必要的网络传输,提高响应速度。代理服务器和高速缓存(Cache)的使用也得以规范化,它们可以在客户端和服务器之间存储和...

    中文完整版 HTTP协议1 1 pdf

    合理设置Cache-Control头部信息中的max-age参数可以有效减少不必要的网络往返时间。同时,利用Last-Modified和If-Modified-Since等字段进行条件性GET请求也是提高性能的有效手段之一。 #### 减少HTTP请求次数 页面...

    http1.1.rar_http 协议_http1.1

    - HTTP/1.1加强了缓存控制,提供了`Cache-Control`头字段,可以精确控制资源是否可缓存、缓存有效期等。 - `ETag`和`If-None-Match`用于验证缓存是否过期,`Last-Modified`和`If-Modified-Since`则提供了基于时间...

    HTTP协议1.1

    9. **缓存控制**:通过Cache-Control、ETag、If-None-Match等首部,增强了缓存机制,减少了不必要的网络传输。 10. **安全与身份验证**:引入了Basic认证、Digest认证以及HTTPS(HTTP over SSL/TLS)来增强安全性。...

    RFC 2616 HTTP 1.1 超文本传输协议(中文版有目录) pdf

    - **缓存控制**:通过设置缓存控制头(如`Cache-Control`和`Expires`),可以控制缓存的行为。 - **验证器**:通过使用条件请求(如`If-Modified-Since`和`ETag`),可以避免不必要的数据传输。 - **代理服务器**:...

    Http1.1协议详情

    ##### 2.4 缓存控制(cache control) 为了提高效率并减少带宽消耗,HTTP/1.1 引入了缓存控制机制,允许服务器和客户端通过特定的头部信息协商缓存策略,比如设置缓存的有效期等。 ##### 2.5 多种请求方法 HTTP/1.1 ...

    HTTP1.1协议中文版

    ### HTTP 1.1协议详解 #### 一、概述与背景 HTTP(HyperText Transfer Protocol)作为互联网上应用最广泛...通过对HTTP/1.1的理解,开发者可以更好地设计和实现网络应用程序,同时也能更深入地理解互联网的工作原理。

    29-HTTP1:HTTP性能优化_For_vip_user_0011

    7. **缓存控制**:HTTP/1.1提供了更精细的缓存机制,如`Cache-Control`和`ETag`头,允许浏览器判断是否需要重新请求资源,从而减少不必要的网络通信。 然而,尽管HTTP/1.1进行了许多优化,它仍然存在一些性能限制,...

    HTTP访问模块1.1.rar

    响应头则包含服务器返回的信息,如Server标识服务器软件,Content-Type表示响应体的类型,Cache-Control控制缓存策略。 5. **状态码**:HTTP响应中包含三位数字的状态码,如200表示成功,404表示未找到,500表示...

Global site tag (gtag.js) - Google Analytics