Filter小应用/ 动态jsp页面不缓存,静态文件缓存,Firefox如何去查看和清除缓存
程序员文章站
2022-05-23 08:38:22
...
前言
今天学习了Filter的小作用,这个缓存还是比较重要的一门技术,能够加快你网页的访问。往往动态的jsp页面,是不需要缓存的,一个动态的玩意儿你缓存了干嘛。但是往往那些持久的,不变的静态资源你需要进行缓存。这样可以加快浏览器的访问速度。
代码
缓存静态资源:
@WebFilter(filterName = "StaticCachedFilter")
public class StaticCachedFilter implements Filter {
private FilterConfig config = null;
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
//1.获取用户想访问的资源
String uri = request.getRequestURI();
//2.得到后缀名和配置文件项进行匹配
String ext = uri.substring(uri.lastIndexOf(".") + 1);
//3.设置缓存的时间
String time = config.getInitParameter(ext);
if (time != null) {
long time1 = Long.parseLong(time) * 3600 * 1000;
response.setDateHeader("Expires", System.currentTimeMillis() + time1);
}
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
动态jsp不缓存.
@WebFilter(filterName = "NoCacheFilter", urlPatterns = {"*.jsp"})
public class NoCacheFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletResponse response = (HttpServletResponse) resp;
HttpServletRequest request = (HttpServletRequest) req;
response.setDateHeader("Expires", -1);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
}
}
代码都比较简单,但是验证的过程倒是废了一点时间。Firefox如何去查看,并且清除缓存?
Firefox缓存
1.查看缓存:浏览器输入about:cache,注意中间有冒号
2.点进去查看缓存。
3、清除缓存,记得不要清除上面的cookie,不然你下次登录啥的时候,你自己就不能免密登录了。
查看Filter缓存结果
第一次:
查看图片缓存时间:
第二次:
不难看到,浏览器第二次没有去向服务器请求图片,而是使用了缓存的内容。并且在缓存内容中也没有看到index.jsp的相关缓存。说明我们的代码是有效的。
总结
所有的知识点,如果只是看不去尝试,就体会不到写代码的乐趣~
上一篇: 购物车数据结构及本地存储技术
下一篇: mui写一个购物车