Filter(四)常见应用3---控制浏览器缓存一些静态资源
来源:互联网 发布:java拦截器的原理 编辑:程序博客网 时间:2024/05/21 18:52
一些动态页面中可能会包含一些修饰页面样式的js和css文件,这些文件对这个网页来说,是相对较长时间不会发生变化的,因此这些文件在第一次访问这些页面时,可以实现让浏览器将其缓存下来,这样可以避免每次访问此网页时,多次下载此文件,加速了访问速度。另外为了避免长时间不访问此网页,而起相关的类似js和css的静态资源一直被缓存着,可以设置其缓存时间,在此时间内,对其进行缓存,超过此时间,将其从缓存中清空。
利用过滤器技术,可以实现上述功能,在给出示例代码前,需要解释下,如何控制缓存一个文件的时间,如下:
response.setDateHeader("expires", System.currentTimeMillis()+value);通过此可以设置缓存时间;
下面是一个示例,此例子可扩展性较强,此例子可以缓存css,js,jpg等
//Filter<filter> <filter-name>StaticContentFilter</filter-name> <filter-class>cn.itcast.utils.StaticContentFilter</filter-class> <init-param> <param-name>css</param-name> <param-value>10</param-value> </init-param> <init-param> <param-name>js</param-name> <param-value>20</param-value> </init-param> <init-param> <param-name>jpg</param-name> <param-value>30</param-value> </init-param> </filter> <filter-mapping> <filter-name>StaticContentFilter</filter-name> <url-pattern>*.jpg</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
public class StaticContentFilter implements Filter {private FilterConfig config;@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest req, ServletResponse resp,FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stub//类型转换HttpServletRequest request = (HttpServletRequest)req;HttpServletResponse response = (HttpServletResponse)resp;//获取资源类型String uri = request.getRequestURI();String type = uri.substring(uri.lastIndexOf(".")+1);String time = config.getInitParameter(type);System.out.println(type+":"+time);//设置缓存时间if(time!=null){System.out.println(type+":"+time);int value = (int) (Long.parseLong(time)*1000);response.setDateHeader("expires", System.currentTimeMillis()+value);}chain.doFilter(request, response);}@Overridepublic void init(FilterConfig config) throws ServletException {// TODO Auto-generated method stubthis.config = config;}}
0 0
- Filter(四)常见应用3---控制浏览器缓存一些静态资源
- 4Filter应用3控制浏览器缓存页面中的静态资源的过滤器
- 浏览器静态资源的版本控制新思路.强制更新指定资源缓存.的探讨
- Filter(四)常用应用2---使浏览器不缓冲动态资源
- F5刷新浏览器不缓存静态资源
- 静态资源缓存控制grunt插件
- Filter(四)常见应用4---自动登录
- Filter实现浏览器是否缓存页面信息,和控制编码
- Filter实现浏览器是否缓存页面信息,和控制编码
- Filter拒绝浏览器缓存
- 3Filter应用2禁止浏览器缓存所有动态页面的过滤器
- Filter应用之全站禁用浏览器缓存
- Filter常见应用(五)---缓存数据到内存
- 通过过滤器控制静态资源的缓存时间
- Filter(四)常见应用一----解决乱码问题
- Filter常见应用
- Filter常见应用
- 【servlet】Filter常见应用
- Oracle 10g Transparent Data Encryption examples
- Google C++ Testing Framework AdvancedGuide
- 内存参数设置不合理导致数据库HANG
- 初学编程两年多学习的总结!
- 嗯,加油。
- Filter(四)常见应用3---控制浏览器缓存一些静态资源
- 代码更改文件或文件夹名称
- IFF_UP 和 IFF_RUNNING 的差别在哪
- 超级棒的手机流量管理软件,节约流量有技巧
- android自定义view–绘制顺序及相关原理
- C++中引用传递与指针传递区别
- 如何迅速成为Java高手
- ModelAndView 讲解
- Managing Multiple Resources in Hadoop 2 with YARN