欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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,注意中间有冒号
Filter小应用/ 动态jsp页面不缓存,静态文件缓存,Firefox如何去查看和清除缓存
2.点进去查看缓存。
Filter小应用/ 动态jsp页面不缓存,静态文件缓存,Firefox如何去查看和清除缓存
3、清除缓存,记得不要清除上面的cookie,不然你下次登录啥的时候,你自己就不能免密登录了。
Filter小应用/ 动态jsp页面不缓存,静态文件缓存,Firefox如何去查看和清除缓存

查看Filter缓存结果

第一次:
Filter小应用/ 动态jsp页面不缓存,静态文件缓存,Firefox如何去查看和清除缓存
查看图片缓存时间:
Filter小应用/ 动态jsp页面不缓存,静态文件缓存,Firefox如何去查看和清除缓存
第二次:
Filter小应用/ 动态jsp页面不缓存,静态文件缓存,Firefox如何去查看和清除缓存

不难看到,浏览器第二次没有去向服务器请求图片,而是使用了缓存的内容。并且在缓存内容中也没有看到index.jsp的相关缓存。说明我们的代码是有效的。

总结

所有的知识点,如果只是看不去尝试,就体会不到写代码的乐趣~