在jsp页面中有很多资源都是静态的,很少发生改变。如引入的js,css文件,如果每次加载页面都要到服务器去请求这些文件,会造成一定的浪费,如果将这些资源进行缓存,用户体验就会更好。思路是这样,服务第一次接受静态资源的请求后得到资源输出给客户,输出时设置缓存,下次请求利用浏览器的缓存机制从缓存中获取资源文件。
这就需要做两方面的工作:
第一、静态资源的路径需要添加版本号,如js文件要写出<script
src
="/js/menu.js?__V=1248657811953
"
type
="text/javascript
"
>,这里的版本号采用的是js文件的lastModified属性,这样但服务器端的js有改动的话,版本号就会变化,从而重新加载新的js资源文件。这里就需要写相应的jsp tag类了,用于生成合适的资料路径。有关如何定制jsp tag请参考相关的文档。
第二、输出文件时添加缓存,我们这里采用的是在filter中添加缓存,在web.xml中定义如下内容:
<filter-mapping>
<filter-name>StaticResourceFilter</filter-name>
<url-pattern>/js/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>StaticResourceFilter</filter-name>
<url-pattern>/css/*</url-pattern>
</filter-mapping>
这样css和js文件的请求都会经过StaticResourceFilter,于是css和js目录下的所有文件都会被缓存,在这个filter里,我们就可以在输出css和js资源时,添加过期头了。代码类似:
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain)
throws IOException, ServletException {
// add expire head.
response.setHeader("Cache-Control", ?);
response.setDateHeader("Expires", ?);
chain.doFilter(request, response);
}
根据自己的需要添加相应的控制。有关response的过期头知识可参考:http://sites.google.com/site/wisedukb/Home/response-expire-header
分享到:
相关推荐
本篇文章主要介绍了Spring Boot Web 静态文件缓存处理的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
可以称之为总版,模仿forum 类的接口做个superforum 并且实现cachable,不过因为这个页面刷新量比较大,虽然被cache 了,我还是想办法进行页面的缓存,感觉用jsp 产生的html静态内容当缓存,页面访问速度应该有所提高...
2.缓存技术(当数据更新比较快,几秒钟更新一次,或者需要实时反映数据变化,或者页面具有很多种风格,不便于生成静态页面) 页面缓存(局部缓存和全局缓存)(View,html代码) 缺点:不能做到实时更新 优点:比二...
图片上传成功jsp页面不刷新,是因为浏览器缓存导致,需要在图片请求参数中添加随机参数
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
6. 进行性能优化,如缓存静态资源、合理使用数据库连接池等。 源码二: **项目简介:** 使用Struts和Hibernate框架实现MVC架构。 **优化建议:** 1. 使用Struts框架来管理请求和响应,实现前端与后台业务逻辑的分离...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
JspRun!社区论坛系统,2010年08月04日更新内容... 15、修复生成静态页面缓存方式不正确的问题。 16、优化并提高论坛安全性,防止sql注入。 17、修复邮件验证用户控制面版信息显示错误问题。 18、更多细节问题的修复
资源服务器是库和Web应用程序的集合,旨在更有效地将静态资源(例如CSS和JavaScript)包含在Java Web应用程序中。 诸如jQuery版本之类的共享资源包含在Web应用程序中的一个定义良好的版本化URL下,并带有浏览器端...
18、修复了Archiver 功能在 URL 非静态化的条件下无法正常访问 19、修复了论坛会员个人设置时区无效 20、修复了jspruncode的html解析错乱,如table表格,img图片标签 21、修复了版主超版部分后台权限 22、修复了...
通过在init()方法中缓存一些静态的数据或完成一些只需要执行一次的、耗时的操作,就可大大地提高系统性能。 例如,通过在init()方法中建立一个JDBC连接池是一个最佳例子,假设我们是用jdbc2.0的DataSource接口来...
18、修复了Archiver 功能在 URL 非静态化的条件下无法正常访问 19、修复了论坛会员个人设置时区无效 20、修复了jspruncode的html解析错乱,如table表格,img图片标签 21、修复了版主超版部分后台权限 22、修复了...
1.16 处理静态资源(自定义资源映射) 1.17 Spring Boot定时任务的使用 1.18 Spring Boot使用Druid和监控配置 1.19 Spring Boot使用Druid(编程注入) 1.20 Spring Boot普通类调用bean 1.21 使用模板(thymeleaf-...
当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器,Nginx采取了分阶段资源分配技术,处理静态文件和无缓存的反向代理加速,实现了负载均衡和...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
23、修改了:Js 调用所产生的论坛链接不能生成静态 URL 的问题。 24、修复了:前台自定义信息分类--日期控件IE下显示错误,谷歌浏览器下乱码现象 25、修改了:如果后台设置的“论坛名称”过长,在分栏模式下将出现...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
23、修改了:Js 调用所产生的论坛链接不能生成静态 URL 的问题。 24、修复了:前台自定义信息分类--日期控件IE下显示错误,谷歌浏览器下乱码现象 25、修改了:如果后台设置的“论坛名称”过长,在分栏模式下将出现...