`
duyouhua1214
  • 浏览: 228136 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用Filter快速对网页资源进行缓存

    博客分类:
  • Java
阅读更多

使用Filter快速对网页资源进行缓存,在网页资源没有改变的情况下避免多次HTTP调用!

    我们可以通过Filter快速对网页资源进行缓存。你可以在你的web.xml设置一个拦截器,并可以指定特定的内容类型,它可以拦截response,并且可以编辑HTTP头。
代码如下:
package com.xyz

import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class CacheFilter implements javax.servlet.Filter {
  FilterConfig filterConfig = null;

  public void init(FilterConfig filterConfig){
    this.filterConfig = filterConfig;
  }

  public void doFilter(ServletRequest req,
     ServletResponse res,
     FilterChain chain)
     throws IOException, ServletException {

    String sCache = filterConfig.getInitParameter("Cache");

    if(sCache != null){
 ((HttpServletResponse)res).setHeader("Cache-Control", sCache);
    }

    chain.doFilter(req, res);
  }

  public void destroy(){
    this.filterConfig = null;
  }
}

现在,假设我们要使这个filter对所有的jpg请求起作用,那么,你就需要在你的web.xml里增加下面的内容:
<filter>
  <filter-name>Cache</filter-name>
  <filter-class>com.xyz.CacheFilter</filter-class>
  <init-param>
    <param-name>cache</param-name>
    <param-value>public, max-age=2592000</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Cache</filter-name>
  <url-pattern>*.jpg</url-pattern>
</filter-mapping>

这个filter现在会指示客户端缓存存贮特定的内容(jpg),时间是2592000秒。
这个filter也可以作用于.css.js文件。事实上,这个filter可以作用于你指定的任何文件类型。只需要简单改变url-pattern 属性或者新增一个。
例如:
<filter>
  <filter-name>Cache</filter-name>
  <filter-class>com.xyz.CacheFilter</filter-class>
  <init-param>
    <param-name>cache</param-name>
    <param-value>public, max-age=2592000</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Cache</filter-name>
  <url-pattern>*.css</url-pattern>
</filter-mapping>

或者
<filter>
  <filter-name>Cache</filter-name>
  <filter-class>com.xyz.CacheFilter</filter-class>
  <init-param>
    <param-name>cache</param-name>
    <param-value>public, max-age=2592000</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Cache</filter-name>
  <url-pattern>*.jpg</url-pattern>
</filter-mapping>
<filter-mapping>
  <filter-name>Cache</filter-name>
  <url-pattern>*.css</url-pattern>
</filter-mapping>

关于作者:
胡萝卜,chinesedocument.cominjava.org的站长。对j2ee比较感兴趣。此文是根据jguru.com上的相关faqs翻译修改而来。
chinesedocument.com
是一家提供教程、中文文档下载、开发工具下载等方面的综合性java网站。
injava.org
是一家提供java个人门户的网站。

 

文章来源:网上

分享到:
评论

相关推荐

    使用filter验证session用户和页面缓存问题处理

    使用filter验证session用户和页面缓存问题处理

    使用Filter和HttpServletResponseWrapper进行页面缓存

    源代码 博文链接:https://msj.iteye.com/blog/179663

    如何使用bloomfilter构建大型Java缓存系统Ja

    如何使用bloomfilter构建大型Java缓存系统Java开发Java经验技巧共5页.pdf.zip

    filter对request请求拦截,对请求参数进行修改

    对request请求进行拦截,对请求参数修改。常用于前台提交表单参数关键字的过滤。此工具可以对参数拦截并转义后提交到对应的处理类。 除了添加两个JsFilter.java和GetHttpServletRequestWrapper.java之外,需要在web....

    Web应用与开发作业

    1、Filter的理解和应用 实现一个禁止缓存的过滤器。 要求和提示: (1)禁止浏览器缓存所有动态页面;...通过监听器记录在线用户的姓名,在页面进行用户姓名的显示,同时实现对某个用户的强制下线功能。

    bloomfilter.js, 使用FNV的JavaScript bloom filter快速散列.zip

    bloomfilter.js, 使用FNV的JavaScript bloom filter快速散列 Bloom过滤器This过滤器实现使用非加密 Fowler-Noll-Vo散列函数来实现速度。用法var bloom = new BloomFilter( 32 * 256,//number of bits to all

    使用filter实现url级别内存缓存示例

    主要介绍了使用filter实现url级别内存缓存示例,只需要一个静态类,在filter中调用,也可以全部写到filt里面。可以根据查询参数分别缓存,需要的朋友可以参考下

    使用filter对字符进行过滤

    使用filter对字符进行过滤,即在Filter中将HttpServletRequest 里的所有参数都取出来分别进行过滤然后再放回到该HttpServletRequest 中。

    delphi资源-Filter中的模糊过滤

    Filter中的模糊过滤: 要实现模糊过滤,BDE中要用“*”,不允许使用“Like”关键字,且只能向后匹配,如“Fcode=’101*’”;而ADO则是使用“%”或“*”都可以,可以使用“Like”关键字,且和SQL语句用法一致,可以...

    spring+springmvc+mybatis项目案例实现用户角色权限管理

    使用spring+springmvc框架 整合了Mybatis持久层框架 整合Druid用于数据库连接,并使用Druid对业务层...使用了sitemesh对网页进行布局和修饰 使用了loginFilter对访问进行登录过滤 使用了CheckCodeServlet生成验证码图片

    hibernate 3中的缓存小结

    当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或load(),以及调用查询接口的list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级...

    grid filter网页

    filter grid filter网页点击右侧Tag快速添加

    filter+listener.pdf

    1. Filter 1.1.概念: web 中的过滤器:当访问服务器的资源时,过滤器可以将请求拦 截下来,完成一些特殊的功能。 过滤器的作用: 用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤 2. 动态代理 2.1....

    主要使用Filter针对Xss攻击,sql注入,服务器访问白名单,以及csrf进行安全校验

    主要使用Filter针对Xss攻击,sql注入,服务器访问白名单,以及csrf进行安全校验 1,主要实现的是三大块功能:Xss攻击,sql注入,服务器白名单,以及csrf 2,此Filter为真实项目部署,在XssHttpServletRequestWrapper...

    12_JavaWeb——Filter&Listener案例资源

    此资源与我的博客12_JavaWeb——Filter&Listener中的案例对应,在11_JavaWeb——Cookie&Session案例资源基础上加上了过滤器,实现了对未登录用户的拦截,希望有所帮助。

    预防XSS攻击和SQL注入XssFilter

    XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin...

    Filter类的使用

    初学者学会Filter类的使用有很大的帮助

    FFT实现相对filter快速的滤波过程

    在MATLAB中通过FFT实现filter函数的功能,并且具有更快的速度。

Global site tag (gtag.js) - Google Analytics