控制html、css、js等静态资源的缓存时间的过滤器

原创 2015年07月07日 23:30:08


2014年9月8日 16:13:13


静态资源(Html、Css、Js等资源):静态资源的缓存可以减轻服务器的负担,浏览器一般会默认缓存,为防止用户禁用缓存,在程序代码中进行对静态资源缓存的控制(包括缓存时间的空控制)。



//控制html、css、js等静态资源的缓存时间的过滤器   

package cn.itcast.filter.example;
 
import java.io.IOException;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
//控制html、css、js等静态资源的缓存时间的过滤器
 
/*
过滤器相关配置:
 
<filter>
<filter-name>NeedCacheFilter</filter-name>
<filter-class>cn.itcast.filter.example.NeedCacheFilter</filter-class>
<init-param>
<param-name>html</param-name>
<param-value>1</param-value><!-- 单位是小时 -->
</init-param>
<init-param>
<param-name>css</param-name>
<param-value>2</param-value><!-- 单位是小时 -->
</init-param>
<init-param>
<param-name>js</param-name>
<param-value>3</param-value><!-- 单位是小时 -->
</init-param>
</filter>
<filter-mapping>
<filter-name>NeedCacheFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>NeedCacheFilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>NeedCacheFilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
*/
public class NeedCacheFilter implements Filter {
private FilterConfig filterConfig;
public void destroy() {
 
}
 
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
System.out.println("控制缓存时间的过滤器过滤了");
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp;
//获取html、css、js各自的缓存时间,如果没有,给个默认值是1小时
int time = 1;
String uri = request.getRequestURI();// /day19/1.html
String extendName = uri.substring(uri.lastIndexOf(".")+1);
if("html".equals(extendName)){
//访问的html资源
String value = filterConfig.getInitParameter("html");
if(value!=null){
time = Integer.parseInt(value);
}
}
if("css".equals(extendName)){
//访问的css资源
String value = filterConfig.getInitParameter("css");
if(value!=null){
time = Integer.parseInt(value);
}
}
if("js".equals(extendName)){
//访问的js资源
String value = filterConfig.getInitParameter("js");
if(value!=null){
time = Integer.parseInt(value);
}
}
response.setDateHeader("Expires", System.currentTimeMillis()+time*60*60*1000);
chain.doFilter(request, response);
}
 
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
 
}
2014年9月8日 16:13:13


静态资源(Html、Css、Js等资源):静态资源的缓存可以减轻服务器的负担,浏览器一般会默认缓存,为防止用户禁用缓存,在程序代码中进行对静态资源缓存的控制(包括缓存时间的空控制)。



//控制html、css、js等静态资源的缓存时间的过滤器   

package cn.itcast.filter.example;
 
import java.io.IOException;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
//控制html、css、js等静态资源的缓存时间的过滤器
 
/*
过滤器相关配置:
 
<filter>
<filter-name>NeedCacheFilter</filter-name>
<filter-class>cn.itcast.filter.example.NeedCacheFilter</filter-class>
<init-param>
<param-name>html</param-name>
<param-value>1</param-value><!-- 单位是小时 -->
</init-param>
<init-param>
<param-name>css</param-name>
<param-value>2</param-value><!-- 单位是小时 -->
</init-param>
<init-param>
<param-name>js</param-name>
<param-value>3</param-value><!-- 单位是小时 -->
</init-param>
</filter>
<filter-mapping>
<filter-name>NeedCacheFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>NeedCacheFilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>NeedCacheFilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
*/
public class NeedCacheFilter implements Filter {
private FilterConfig filterConfig;
public void destroy() {
 
}
 
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
System.out.println("控制缓存时间的过滤器过滤了");
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp;
//获取html、css、js各自的缓存时间,如果没有,给个默认值是1小时
int time = 1;
String uri = request.getRequestURI();// /day19/1.html
String extendName = uri.substring(uri.lastIndexOf(".")+1);
if("html".equals(extendName)){
//访问的html资源
String value = filterConfig.getInitParameter("html");
if(value!=null){
time = Integer.parseInt(value);
}
}
if("css".equals(extendName)){
//访问的css资源
String value = filterConfig.getInitParameter("css");
if(value!=null){
time = Integer.parseInt(value);
}
}
if("js".equals(extendName)){
//访问的js资源
String value = filterConfig.getInitParameter("js");
if(value!=null){
time = Integer.parseInt(value);
}
}
response.setDateHeader("Expires", System.currentTimeMillis()+time*60*60*1000);
chain.doFilter(request, response);
}
 
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
 
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

JSP/HTML页面 (公共JS、CSS、Image缓存)-----静态缓存

【1】服务端配置一个Filter,实现对js、css和image的缓存 package com.cache.model.filter; import java.io.IOException; imp...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2016年11月25日 10:42
  • 1198

通过过滤器控制静态资源的缓存时间

1。StaticResourcesNeedCacheFilter.java文件:package com.itheima.example;import java.io.IOException;impor...
  • wangyanming123
  • wangyanming123
  • 2016年09月16日 11:24
  • 189

控制静态资源(html,css,js)的缓存时间的过滤器

控制静态资源(html,css,js)的缓存时间的过滤器 ------------------------------------------------------------------...
  • qq_28139371
  • qq_28139371
  • 2015年09月18日 20:49
  • 138

tomcat缓存静态资源深入

tomcat缓存静态资源深入
  • zhaozhenzuo
  • zhaozhenzuo
  • 2014年05月11日 20:20
  • 18741

web前端开发之版本控制(缓存处理)

公司项目每次发布或者更新迭代后,会有缓存问题,除了其他一些比较常见的方法,发现gulp能给js,css自动化添加版本号,可解决缓存的问题,所以自动化实现静态资源的版本更新才是正道...
  • AnterWang
  • AnterWang
  • 2017年01月19日 15:23
  • 4261

web项目js css静态文件缓存解决

在web开发过程中经常会遇到js及css文件缓存的问题,开发过程中我们可以自己手动的晴空浏览器缓存,但是我们没法告诉用户去执行一个他们或许不熟悉的操作(清空浏览器缓存),为解决这个问题,编写了一个gr...
  • zimu002
  • zimu002
  • 2015年01月09日 19:14
  • 1657

[细节]Tomcat对静态资源的缓存支持

使用tomcat时我们可以通过配置DefaultServlet来支持对静态资源的访问,而DefaultServlet是具有缓存功能的,下面通过对关键的源码对其进行分析并介绍如何通过配置来控制tomca...
  • Zerohuan
  • Zerohuan
  • 2015年10月30日 23:13
  • 8003

利用 filter 机制 给 静态资源 url 加上时间戳,来防止js和css文件的缓存,利于开发调试

直接上代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
  • qq_27376871
  • qq_27376871
  • 2016年06月26日 13:01
  • 2210

关于web开发中静态资源缓存机制的总结

http://www.cnblogs.com/_franky/archive/2012/07/05/2577141.html
  • super_scan
  • super_scan
  • 2014年08月09日 20:57
  • 20545

96. Spring Boot之静态资源版本映射(解决js/css缓存问题)

我们在之前有一篇文章中讲过【处理静态资源】,但是在实际开发中,我们会发现我们所了解到的知识远远不够我们使用,今天这节就是在实际开发当中对碰到的问题进行一定的讲解和解决。        问题的提出:我...
  • gebitan505
  • gebitan505
  • 2017年02月13日 14:10
  • 6135
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:控制html、css、js等静态资源的缓存时间的过滤器
举报原因:
原因补充:

(最多只允许输入30个字)