一、目的:
提高系统的响应速度
二、原理:
#减少纳税人端与电子税务局服务器的请求数量,请求大小(利用客户端缓存;合并JS和CSS文件,较少页面对静态文件的请求数)
设计点:
1:
图片、
CSS
、
html
和
JS
等静态资源文件,设置客户端的缓存为
1
年,由
apache web
服务器或自行编程实现过滤器
CacheFilter
2: ant 脚本打包时,为静态文件添加版本号,用于通知浏览器及时更新变化为文件
三、实现步骤:
代码:
public class CacheFilter implements Filter {
private FilterConfig filterConfig;
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException,
ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
// 1.获取用户想访问的资源
String uri = request.getRequestURI();
// 2.得到用户想访问的资源的后缀名
String ext = uri.substring(uri.lastIndexOf(".") + 1);
// 得到资源需要缓存的时间
String time = filterConfig.getInitParameter(ext.toLowerCase());
if (time != null) {
long t = Long.parseLong(time) * 3600 * 1000;
// 设置缓存(4小时)
response.setDateHeader("expires", System.currentTimeMillis() + t);
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
public void destroy() {
}
}
<!-- 配置缓存过滤器 -->
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.dcits.portal.system.filter.CacheFilter</filter-class>
<!-- 配置要缓存的web资源以及缓存时间,以小时为单位 -->
<init-param>
<param-name>css</param-name>
<param-value>4</param-value>
</init-param>
<init-param>
<param-name>jpg</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>js</param-name>
<param-value>4</param-value>
</init-param>
<init-param>
<param-name>png</param-name>
<param-value>4</param-value>
</init-param>
<init-param>
<param-name>gif</param-name>
<param-value>4</param-value>
</init-param>
</filter>
<!-- 配置要缓存的web资源的后缀-->
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.jpg</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.png</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.gif</url-pattern>
</filter-mapping>
expires用法