【第22期】观点:IT 行业加班,到底有没有价值?

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

相关文章推荐

谈谈浏览器的缓存过期时间

今天和同事在讨论浏览器的缓存问题。正好之前有遇到过,当时一时没有想清楚它的缓存机制,所以晚上正好有时间仔细研究了一下。     浏览器为什么要缓存?什么会缓存下来?      首先当我...

设置静态内容缓存时间:N/A

我们的网站中往往包含大量的页面组件,比如图片、样式表文件、JS脚本文件和Flash动画。这些组件的变化频率非常低,尤其是那些构成网站基本框架的组件, 几乎不会发生变化。我们可以将这些变化率很低的组件看...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

css、js缓存问题

目前开发新需求,经常服务器发布文件后要不断的刷新页面或者过很长时间,页面上的CSS和JS文件才能生效,特别对于目前做微信公众号的时候,微信内置的浏览器缓存非常的严重。但是目前项目中没有任何处理缓存的机...

缓存cache详解

转载自电商沙龙ec-shalom.com,专研电商艺术。

缓存过期时间那些事儿

背景:服务端使用Twemproxy代理的方式部署 问题:“使用spring-data-redis中的redisTemplate来设置key的过期时间时候,值过大时候会抛出异常。” 啥异常?...

关于更新发布CSS和JS文件的缓存问题

两种处理方式: 一、引用文件添加版本号(注:版本号为对应发布文件时间) 在Web应用程序大行天下的今天,我们程序员的工作大都基于B/S架构,B/S架构的优势就在于可以及时(甚至随时)更新页面以及后...
  • jurken
  • jurken
  • 2015-07-14 15:45
  • 1748

页面的缓存与不缓存设置

页面的缓存与不缓存设置   HTML的HTTP协议头信息中控制着页面在几个地方的缓存信息,包括浏览器端,中间缓存服务器端(如:squid等),Web服务器端。本文讨论头信息 中带缓存控制信息的...

localStorage的黑科技-js和css缓存机制

一、发现黑科技的起因  今天在微信公众号看到一篇技术博文,想用印象笔记收藏,所以发送了文章链接到pc上。然后习惯性地打开控制台,看看源码,想了解下最近微信用了什么新技术。  呵呵,以下勾起了我侦探的...

如何解决HTML5页面js,css缓存问题

我们开发web项目的时候,如果更新了某个css文件,部署到服务器,发现在浏览器访问的时候,并没有什么变化,这是因为浏览器缓存了之前的旧的css文件。如果过一段时间之后再访问,就会发现页面有了变化,这说...

过滤器Filter在项目中应用详解

1、过滤器的概念   Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应。 主要用于对HttpServletRequest 进行预处理,也可以对H...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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