控制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;
}
 
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

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

1。StaticResourcesNeedCacheFilter.java文件:package com.itheima.example;import java.io.IOException;impor...

前端静态资源版本更新与缓存之——通过gulp 在原html文件上自动化添加js、css版本号

原理 修改js和css文件 通过对js,css文件内容进行hash运算,生成一个文件的唯一hash字符串(如果文件修改则hash号会发生变化) 替换html中的js,css文件名...

前端静态资源版本更新与缓存之——通过gulp 在原html文件上自动化添加js、css版本号

原理 修改js和css文件 通过对js,css文件内容进行hash运算,生成一个文件的唯一hash字符串(如果文件修改则hash号会发生变化) 替换html中的js,css文件名...

4Filter应用3控制浏览器缓存页面中的静态资源的过滤器

应用场景: 有些动态页面中引用了一些图片或css文件以修饰页面效果,这些图片和css文件经常是不变化的,所以为减轻服务器的压力,可以使用filter控制浏览器缓存这些文件,以提升服务器的性能。  ...

给webapp路径里的静态资源加时间戳[JS和CSS],Java自定义标签和Servlet的配置

前几日做了一个很小的功能,一般工程启动后,为了能防止浏览器不缓存那些静态资源,比如js和css文件,一般的思路是在引用那些文件的路径后面增加一个时间戳,例如: 本来是下面这样的, 但,这样的话如...

Spring MVC中访问静态资源(如html, js, css等)

最近在学习Spring MVC时遇到一个问题,访问jsp页面正常,访问html页面就会报错。折腾了很久终于搞明白了。先看看Spring MVC处理HTTP请求的流程: Spring MVC的Di...

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

【1】服务端配置一个Filter,实现对js、css和image的缓存 package com.cache.model.filter; import java.io.IOException; imp...

Gulp:静态资源(css,js)版本控制

为了防止客户端的静态资源缓存,我们需要每次更新css或js的时候,通过md5或时间戳等方式重新命名静态资源;  然后涉及到的html模板里的src也要做相应的修改,静态资源需要优化(压缩合并) ...

[Filter过滤器]解决缓存网站图片,css,js等问题

网站图片(gif,jpg等),css,js等不常改变的,可以考虑使用过滤器技术进行缓存 /*--------------------------XML---------------------*/ ...
  • gemman
  • gemman
  • 2013年03月22日 18:16
  • 993

domino平台缓存静态html资源

又有好久没来更新了,距离上次更新一个多月了,主要是这段时间没做什么有意义的事情(有意义的事情就是好好活着!?),赶在国庆前发布一个domino缓存静态资源的帖子:       现在web app应...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:控制html、css、js等静态资源的缓存时间的过滤器
举报原因:
原因补充:

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