Tomcat环境下设置HTTP强缓存
2017-01-14 21:25
375 查看
在之前的一篇文章《HTTP缓存详解》中详细的整理了关于HTTP缓存的知识点,这一篇通过实践,具体验证如何设置HTTP的强缓存,让客户端直接从本地缓存中拿资源,而不发起网络请求。
web.xml配置如下:
配置如下:
官方文档:
tomcat7:http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Expires_Filter
tomcat8:http://tomcat.apache.org/tomcat-8.0-doc/config/filter.html#Expires_Filter
设置
经测试,使用
一、设置HTTP强缓存
可通过Expires与
Cache-Control控制资源何时过期。
Expires通过设置一个具体过期日期来控制,
Cache-Control是设置一个距离第一次请求之后多久的时间段来控制。
1.自定义Filter
过滤器代码如下:public class FilterCache implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException { HttpServletResponse res = (HttpServletResponse) response; //res.setDateHeader("expries", new Date().getTime()+60*60*24*1000); //- 设置一天失效,经测试Chrome下不生效 res.setHeader("Cache-Control", "max-age=10"); //- 这里的单位为秒,10代表第一次请求10s后过期 } @Override public void destroy() { // TODO Auto-generated method stub } }
web.xml配置如下:
<!-- 过滤所有的js文件 --> <filter> <filter-name>FilterCache</filter-name> <filter-class>com.demo.cache.FilterCache</filter-class> </filter> <filter-mapping> <filter-name>FilterCache</filter-name> <url-pattern>*.js</url-pattern> </filter-mapping>
2.使用容器的Filter
tomcat容器提供自有的过滤器来设置HTTP缓存,只需在web.xml中进行配置即可,相信其它服务器也有相关的配置项,例如Nginx、WebLogic等。配置如下:
<filter> <filter-name>ExpiresFilter</filter-name> <filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class> <init-param> <param-name>ExpiresByType image</param-name> <param-value>access plus 10 days</param-value> </init-param> <init-param> <param-name>ExpiresByType text/css</param-name> <param-value>access plus 10 days</param-value> </init-param> <init-param> <param-name>ExpiresByType application/javascript</param-name> <param-value>access plus 10 days</param-value> </init-param> </filter> <filter-mapping> <filter-name>ExpiresFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping>
官方文档:
tomcat7:http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Expires_Filter
tomcat8:http://tomcat.apache.org/tomcat-8.0-doc/config/filter.html#Expires_Filter
二、特别说明
1.客户端环境准备
在Chrome下,需进行如下设置(F12接着按F1即可打开settings面板):2.刷新浏览器方式
经过测试,只有通过浏览器地址栏回车的方式强缓存才会生效;以F5、浏览器刷新按钮、Ctrl+R方式刷新页面均会发起HTTP网络请求,即使缓存未过期。三、结果
在Chrome下测试结果如下:设置
Cache-Control的过期时间为10s,第一次请求返回200,在size栏下显示文件大小;第二次刷新页面,size栏显示
from memory cache,即证明浏览器未发起网路请求,直接从本地缓存中获取资源。在IE下会显示
来自缓存,Firefox下显示
已缓存。
经测试,使用
Cache-Control设置缓存在Chrome、Firefox、Edge、IE11下均有效,使用
Expires只在IE11与Edge下生效。
相关文章推荐
- 深度学习Caffe实战笔记(15)CNN网络结构可视化
- 网络爬虫简介与实现
- Windows网络编程
- HTTP介绍
- httpclient的使用
- Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】
- [网络流24题] 太空飞行计划
- hihocoder 1388 2016北京网络赛1006 Periodic Signal(卡精度的FFT)
- APT***简介
- 将TensorFlow的网络导出为单个文件
- Android开发教程:使用http协议获取网络图片
- Ajax之XMLHttpRequest
- Java网络编程
- HttpClient—Apache的HTTP 协议工具包
- [网络流24题]飞行员配对方案问题
- HttpURLConnection—多用途、轻量极的HTTP客户端
- Cogs 14. [网络流24题] 搭配飞行员(二分图匹配)
- http协议详解
- 系统架构设计师教程知识整理——计算机与网络基础知识(二)
- iOS网络