package com.elink.control;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.elink.util.*;
/**
* @author liubj
*/
public class BusiCacheFilter implements Filter
{
private FilterConfig config = null;
private HashMap expiresMap = new HashMap();
public void init(FilterConfig filterConfig)
{
this.config = filterConfig;
expiresMap.clear();
Enumeration names = config.getInitParameterNames();
while( names.hasMoreElements() )
{
try
{
String name = (String)names.nextElement();
String value = config.getInitParameter( name );
Integer expire = Integer.valueOf( value );
expiresMap.put( name, expire );
}
catch( Exception ex)
{
}
}
}
public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
String uri = req.getRequestURI();
String ext = null;
int dot = uri.lastIndexOf(".");
if( dot != -1 )
{
ext = uri.substring( dot+1 );
}
setResponseHeader( res, uri, ext );
chain.doFilter(request, response);
}
public void destroy()
{
}
protected FilterConfig getFilterConfig()
{
return (config);
}
private void setResponseHeader( HttpServletResponse response, String uri, String ext )
{
if( ext!= null && ext.length() > 0 )
{
Integer expires = (Integer)expiresMap.get(ext);
if( expires != null )
{
LogUtil.logDebug( uri + ".Expires: "+ expires.intValue());
if( expires.intValue() > 0 )
{
response.setHeader("Cache-Control","max-age="+expires.intValue()); //HTTP 1.1
}
else
{
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0 );
}
}
}
}
}
web.xml
<filter>
<filter-name>busicachefilter</filter-name>
<filter-class>com.elink.control.BusiCacheFilter</filter-class>
<init-param>
<param-name>js</param-name>
<param-value>3600</param-value>
</init-param>
<init-param>
<param-name>gif</param-name>
<param-value>3600</param-value>
</init-param>
<init-param>
<param-name>jpg</param-name>
<param-value>3600</param-value>
</init-param>
<init-param>
<param-name>css</param-name>
<param-value>3600</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>busicachefilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>busicachefilter</filter-name>
<url-pattern>*.gif</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>busicachefilter</filter-name>
<url-pattern>*.jpg</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>busicachefilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/netcom19/archive/2004/12/11/213141.aspx
分享到:
相关推荐
客户端缓存通常依赖于HTTP头信息,服务器通过设置合适的缓存策略,可以让浏览器自动缓存静态资源,如CSS、JavaScript文件和图片。 总结来说,"jsp 页面缓存"是一个涉及到Web性能优化的关键概念。通过合理地设置和...
* js 设置缓存及猎取设置的缓存 * JSP 页面缓存 cache 技术--扫瞄器缓存介绍及实现方法 * Js 代码中,ajax 恳求地址后加随机数防止扫瞄器缓存的缘由详解 * AngularJS 中$http 缓存以及处理多个$http 恳求的方法 * JS ...
浏览器缓存是指浏览器存储已访问过的页面资源(如HTML文档、图片、CSS样式表等),以便当用户再次访问同一页面时能够更快地显示这些资源。这样做的好处是可以显著提高页面的加载速度,并减轻服务器的压力。但在某些...
- **永久缓存**:对于不经常变动的静态资源(如CSS、JavaScript文件)可设置长期缓存。 ### 五、优化与注意事项 - **缓存粒度**:根据内容变化频率和大小划分缓存单元,避免整体更新导致不必要的开销。 - **缓存...
1. **浏览器缓存**:当用户访问一个网页时,浏览器会自动将页面的静态资源(如图片、CSS、JavaScript文件等)存储在本地缓存中,以便下次访问时快速加载。要清空浏览器缓存,可以手动通过浏览器的设置选项来完成,如...
如果启用了JSP缓存,那么这个编译后的Servlet会被保存在内存中,后续请求相同JSP时,无需再次编译。 ### 2. 配置Tomcat缓存 #### 2.1 CoyoteCaching配置 CoyoteCaching可以通过修改`server.xml`中的`Connector`...
2. **静态资源缓存**:除了JSP文件外,Tomcat还可能缓存静态资源(如CSS、JavaScript文件等)。这些资源通常被浏览器缓存,而不是由Tomcat缓存。不过,对于Tomcat内部的缓存管理策略,我们同样需要关注。 #### 清除...
最后,还需提一下,如果图片无法在JSP页面中居中,可能的原因包括但不限于:图片的父元素没有正确设置样式、JSP容器默认的样式影响了布局、外部CSS链接未正确加载或存在冲突、以及浏览器缓存导致页面样式未更新等...
总的来说,自动添加版本号是解决浏览器缓存问题的有效手段,它可以确保用户始终能够获取到最新版本的CSS和JavaScript文件。通过JavaScript、服务器端语言或构建工具,开发者可以轻松地实现这一功能,从而提供更好的...
这个“JSP SSH DIV CSS 简单论坛”项目可能是基于上述技术构建的一个小型社区交流平台。在这样的论坛中,用户可以注册、登录,发布和回复帖子,进行互动讨论。项目的结构可能包括以下几个主要部分: 1. **登录/注册...
HTML 实现自动清理 JS、CSS 文件的缓存方法 在 Web 开发中,缓存机制是非常重要的,缓存可以减少服务器的负载,提高页面的加载速度。然而,缓存也带来了一个问题,就是如何确保浏览器获取最新的资源文件?尤其是在...
优化CSS和JSP的加载速度,可以通过合并CSS文件减少HTTP请求,利用CSS Sprites技术减少图片请求,以及使用CDN(内容分发网络)加速静态资源的加载。对于JSP,合理地控制作用域、避免过多的脚本let块和scriptlet,以及...
框架:html + js + css + jsp + servlet + java + mysql 前端:html + js + css 后端:jsp + servlet + java + mysql 开发工具:ideaIC-2022.3.2.exe 或者eclipse都行 + jdk1.8 + Apache Tomcat/8.5.78 ...
【标题】"用js+css+jsp做的Tab分页"涉及到的是前端开发中的一个常见功能——Tab切换分页。在网页设计中,Tab分页是一种常见的信息组织方式,它允许用户在有限的空间内展示多个相互关联的内容板块,通过点击不同的Tab...
JSP结合了HTML、CSS、JavaScript等前端技术与Java语言的后端处理能力,使得开发者可以方便地实现动态内容的生成。本教程将深入探讨如何在JSP中进行图片展示,这一主题对于构建互动性强、视觉效果丰富的网站至关重要...
但是,有一个小问题没有解决,就是如果我的资源文件变了,比如css文件有修改,当我服务端发布之后,用户这边还是会存在缓存。最好的效果时当文件有改变时或者说当服务端的程序重启之后,用户的请求需要下载服务端的...
为了兼顾两者,开发者可能会在Java后端生成JSON格式的消息,以供前端JavaScript使用,同时保持CSS和JavaScript的灵活性。 综上所述,Java缓存机制涉及到声明式缓存的使用、缓存抽象的理解以及Web开发中的会话管理、...
浏览器为了提高用户体验,会自动缓存访问过的网页内容,包括HTML、CSS、JavaScript文件以及图片等资源。当用户再次访问同一URL时,浏览器会先检查本地缓存,如果发现资源未过期,则直接从缓存中读取,避免了重复请求...