使用过滤器控制浏览器的缓存时间(转载)

author author     2022-09-15     315

关键词:

原文地址:http://www.blogjava.net/dashi99/archive/2008/12/30/249207.html

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缓存的四种风味与缓存策略(代码片段)

...需要在客户端和服务器之间进行多次往返通信,这拖延了浏览器可以使用和处理内容的时间,同时也增加了访问者的数据成本。因此,缓存和重用以前获取的资源的能力成为优化性能很关键的一个方面。每个浏览器都实现了HTTP... 查看详情

javaee之--------过滤器设置是否缓存(filter)

...求,这样会让server增大工作量。为了防止这样。我们採用过滤器来设置client是都缓存。參考文章:点击打开链接 HTTP1.1中启用Cache-Control 来控制页面的缓存与否。这里介绍几个经常使用的參数:no-cache,浏览器和缓存server... 查看详情

web开发须知的浏览器内幕缓存与存储篇

本文禁止转载,由UC浏览器内部出品。3.HTTPCache综述HTTPCache是完全按照IETF规范实现的,最新的RFC规范地址是https://tools.ietf.org/html/rfc7234。它的作用就是保存可缓存的响应以备重新使用,在下次请求时可减少响应时间和网络带宽。... 查看详情

使用response来控制浏览器的缓存

...常常用的,也是非常重要的一项技术。主要用于客户端(浏览器)向服务器端请求的是一些比较大的数据,并且这个数据在短时间内不会经常发生变化的情况,比如一些网站的logo图片,它是一个网站的标志,一般不会发生变化... 查看详情

如何控制 JSP 页面中的缓存?

...问题描述】:我在doFilter中使用以下代码创建了一个Servlet过滤器:HttpServletResponsehttpResponse=(HttpServletResponse)response;httpResponse.setHeader("Cache-Control","no-c 查看详情

用于浏览器缓存的 Servlet 过滤器?

】用于浏览器缓存的Servlet过滤器?【英文标题】:Servletfilterforbrowsercaching?【发布时间】:2011-03-2310:16:33【问题描述】:有谁知道如何编写一个servlet过滤器,该过滤器将在给定文件/内容类型的响应中设置缓存标头?我有一个提... 查看详情

wordpress怎么用php代码控制浏览器缓存时间??

...百度已被本人翻烂,不要百度!!!你只能用PHP尝试控制浏览器缓存,比如:header("Pragma:no-cache");这是不缓存,max-age则可以限制缓存过期的时间“秒”。缓存机制受多方影响:1、你使用的webserver,APACHE和nginx等,都有自... 查看详情

如何使用控制缓存标头?

...例如我的style.css、图像等。我读过下面的php代码应该告诉浏览器缓存html内容。我写了一个快速的php页面,上面有几张图片,并将下面的代码贴在顶 查看详情

filter使浏览器不缓存的过滤器

有3个Http响应字段都可以禁止浏览器缓存当前页面,他们在servlet中代码如下:response.setDateHeader("Expires",-1);response.setHeader("Cache-Control","no-cache");response.setHeader("Pragma","no-cache");并不是所有浏览器都完全支持以上三个方法,所以最后一... 查看详情

通过httpheader控制缓存

...验。HTTP协议中也规定了一些和缓存相关的Header,来允许浏览器或共享高速缓存缓存资源。这些Header包括:Last-Modified和If-Modified-SinceETag和If-None-MatchExpiresCache-Control以上Header又可以分成两种类型:协商缓存:浏览器发送验证到服务... 查看详情

通过httpheader控制缓存

...验。HTTP协议中也规定了一些和缓存相关的Header,来允许浏览器或共享高速缓存缓存资源。这些Header包括:Last-Modified和If-Modified-SinceETag和If-None-MatchExpiresCache-Control  以上Header又可以分成两种类型:协商缓存:浏览器发送验证到... 查看详情

nacos源码之auth(权限)模块-1(授权过滤器与控制器缓存)(代码片段)

...2(权限管理与权限配置)》Nacos的Auth模块Nacos的Auth模块授权过滤器(权限核心注解)注解实现讲解权限操作类型控制器缓存获取方法初始化两个对象表Naco读后感上一篇《nacos源码构建与总览》浏览器还挺多,接下来模块的精讲来... 查看详情

缓存控制

...接点击跳转、通过js调用window.open打开新页面都是会使用浏览器缓存的,在未过期情况下会直接使用浏览器缓存的副本,在未过期情况下一次请求也不发送);   2、对于刷新页面(如按F5键刷新),会再次发送一次请... 查看详情

如何使用缓存过滤器?

】如何使用缓存过滤器?【英文标题】:Howtousecachefilter?【发布时间】:2021-11-3017:43:33【问题描述】:我的缓存过滤器有问题。这个想法是不缓存包含"incomplete_result":true的响应这是我的过滤功能:importrequestsimportrequests_cach... 查看详情

转载web网站css,js更新后客户浏览器缓存问题,需要刷新才能正常展示的解决办法

...加载缓慢本地缓存问题,虽然服务器修改了css文件,但是浏览器仍然使用本地缓存的css,需要用户多刷新一次才能正常展示显然是很不合理的,那么怎么样解决更新后让浏览器请求新的cs 查看详情

如何控制ajax请求中的缓存控制

...,但是如何更改ajax请求中的缓存控制值?注意:我希望浏览器使用它的缓存。我不希望它从服务器获取更新的json......这就是我想要做的全部事情。【问题讨论】:在 查看详情

http缓存控制小结

...需要在客户端和服务器之间进行多次往返通信,这拖延了浏览器可以使用和处理内容的时间,同时也增加了访问者的数据成本。因此,缓存和重用以前获取的资源的能力成为优化性能很关键的一个方面。 序 本文用于解决以下... 查看详情

(转载)iptables及使用layer7七层过滤

 一:简介iptables是与Linux内核集成的IP信息包过滤系统。如果Linux系统连接到因特网或LAN、服务器或连接LAN和因特网的代理服务器,则该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。netfilter/iptablesIP信息包过... 查看详情