Filter应用之2-设置某些页面缓存或是不缓存
要想让所有浏览器不缓存页面,需要在每个jsp上加上:
<%
response.setHeader("expires","-1");
response.setHeader("pragma","no-cache");
response.setHeader("cache-control","no-cache");
%>
测试,新建一个cache.jsp: 加上了上边的三句话后,用IE查看缓存,没有cache.jsp的缓存。但是每个页面都加这这代码,有点麻烦,分析:可以通过一个过虑器,对所有*.jsp过虑,设置三个头,全部不缓存。这样就不需要再每个jsp页面都写上边的三个头了。
第一步:实现过虑器接口
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//转换
HttpServletResponse resp = (HttpServletResponse) response;
resp.setHeader("expires","-1");
resp.setHeader("pragma","no-cache");
resp.setHeader("cache-control","no-cache");
//都放行
chain.doFilter(request, response);
}
第二步:配置过虑器,url-pattern=*.jsp
<!-- 控制缓存的Filter -->
<filter>
<filter-name>cache</filter-name>
<filter-class>com.lhy.filter.CacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cache</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
第三步:设置对某些页面缓存N天
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
//转换
HttpServletResponse resp = (HttpServletResponse)response;
//设置页面缓存时间
//日历
Calendar c = Calendar.getInstance();
//加2天
c.add(Calendar.DATE,2);
long time = c.getTimeInMillis();
resp.setDateHeader("expires", time);
// resp.setHeader("pragma","no-cache");
// resp.setHeader("cache-control","no-cache");
//都放行
chain.doFilter(request, resp);
}
注意:我用的myeclipse生成的jsp,head里有这几句话,如果是想要设置缓存几天,一定要去掉,否则设置无效。
<meta http-equiv="pragma" content="no-cache">:禁止浏览器从本地机的缓存中调阅页面内容
<meta http-equiv="cache-control" content="no-cache">:指定请求和响应遵循的缓存机制
<meta http-equiv="expires" content="0"> :指定网页在缓存中的过期时间,一旦网页过期,必须到服务器上重新调阅。
Filter应用之2-设置某些页面缓存或是不缓存的更多相关文章
- 转载:设置html页面不让浏览器缓存的方法
本文是转载文章,只是方便自己记录. 在html页面head标签之间添加以下标识可以避免大多数浏览器缓存: <meta http-equiv="Pragma" content= ...
- 设置html页面不被浏览器缓存
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" ...
- 关于api接口以及页面数据通信域名,缓存cdn设置优化
以B站为例: 主域名:www.bilibili.com 账户登录注册相关域名,包括app登录:passport.bilibili.com 静态资源css,js,img等相关域名:static.bili ...
- JSP 页面缓存以及清除缓存
一.概述 缓存的思想可以应用在软件分层的各个层面.它是一种内部机制,对外界而言,是不可感知的. 数据库本身有缓存,持久层也可以缓存.(比如:hibernate,还分1级和2级缓存) 业务层也可以有缓存 ...
- SP 页面缓存以及清除缓存
JSP 页面缓存以及清除缓存 一.概述 缓存的思想可以应用在软件分层的各个层面.它是一种内部机制,对外界而言,是不可感知的. 数据库本身有缓存,持久层也可以缓存.(比如:hibernate,还分1级和 ...
- [原创]java WEB学习笔记45:自定义HttpFilter类,理解多个Filter 代码的执行顺序,Filterdemo:禁用浏览器缓存的Filter,字符编码的Filter,检查用户是否登陆过的Filter
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 缓存:前端页面缓存、服务器缓存(依赖SQL)MVC3
缓存依赖数据库 第一步 1通过vs里面带的命令提示窗口. 2或者.NET Framework 版本 4(64 位系统)条件,%windir%\Microsoft.NET\Framework64\v4. ...
- Vue页面缓存和不缓存的方法
第一步 在app中设置需要缓存的div //缓存的页面 <keep-alive> <router-view v-if="$route.meta.keepAlive" ...
- MyBatis 延迟加载,一级缓存,二级缓存设置
什么是延迟加载 resultMap中的association和collection标签具有延迟加载的功能. 延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息.使用关联信息时再去加载关联信息 ...
随机推荐
- 动态渲染的input怎么取消记忆功能
方法1 :自定义去除记忆功能属性: $('#index_table_filter > label > input[type="search"]').attr('auto ...
- Python 字典(Dictionary) keys()方法
Python 字典(Dictionary) keys() 函数以列表返回一个字典所有的键. 语法 keys()方法语法: dict.keys() 参数 NA. 返回值 返回一个字典所有的键. 实例 以 ...
- SqlCommand和SqlDataAdapter的区别
SqlDataAdapter对象 一.特点介绍1.表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接.2.在SqlDataAdapter和DataSet之 ...
- 记一次项目使用webuploader爬坑之旅
因前端页面开发使用的为VUE开发,又要支持IE9,遂只有基于webuploader封装一个上传组件.地址:https://github.com/z719725611/vue-upload-web ...
- 新建maven web 项目后,出现的小问题
问题一:Description Resource Path Location TypeCannot change version of project facet Dynamic Web Module ...
- 基于NLP和GAN的小说影视化
轮廓: https://tieba.baidu.com/p/1271120336 着色:
- CreateDialog()与CreateDialogIndrect()
CreateDialog() 概述 函数功能:CreateDialog宏从一个对话框模板资源创建一个无模式的对话框,CreateDiaog宏使用CreateDialogParam函数. 函数原型:HW ...
- PAT甲 1001. A+B Format (20) 2016-09-09 22:47 25人阅读 评论(0) 收藏
1001. A+B Format (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Calculate ...
- hdu 5032 不易发觉的树状数组
http://acm.hdu.edu.cn/showproblem.php?pid=5032 给定一个1000x1000的点阵,m组询问,每次询问一个由(0,0).(x,0)点一以及从原点出发的方向向 ...
- 二:nodejs+express+redis+bootstrap table+jquery UI
介绍:做一个量化投资的实时系统. 综合: 添加记录,顺序改变的话,refresh之后,能正常刷新吗?可以正常刷新,只是顺序又变回去. express中用fs readfile 时,需要用path.jo ...