技术开发 频道

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

  使用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>

 

0
相关文章