一尘不染

Tomcat:缓存控制

tomcat

Jetty具有CacheControl参数(可以指定为webdefault.xml),该参数确定客户端的缓存行为(通过影响发送到客户端的标头)。

Tomcat是否有类似的选择?简而言之,我想关闭对雄猫服务器和/或特定Web应用程序交付的所有页面的缓存吗?

更新资料

请注意,我指的不是服务器端缓存。我希望服务器告诉所有客户端(浏览器)不要使用自己的缓存,并始终从服务器获取内容。我想一次处理所有资源,包括静态资源(.css,.js等)。


阅读 552

收藏
2020-06-16

共1个答案

一尘不染

与上面的帖子类似,但是该代码存在一些问题。这将禁用所有浏览器缓存:

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

public class CacheControlFilter implements Filter {

    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {

        HttpServletResponse resp = (HttpServletResponse) response;
        resp.setHeader("Expires", "Tue, 03 Jul 2001 06:00:00 GMT");
        resp.setDateHeader("Last-Modified", new Date().getTime());
        resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0");
        resp.setHeader("Pragma", "no-cache");

        chain.doFilter(request, response);
    }

}

然后按照StuThompson的answer中的描述映射到web.xml中。

2020-06-16