【问题标题】:How can I disable Tomcat caching completly?如何完全禁用 Tomcat 缓存?
【发布时间】:2011-01-10 11:53:21
【问题描述】:

我目前正在处理的网站有问题。

我们正在尝试制作 facebook 连接 cmets 小部件。每次我们发出一个以 200 OK 状态响应的新请求时,都会加载该小部件。但是当它返回 304 Not Modified 时,小部件不会加载。

这一切都指向了一个缓存问题。我尝试更改 context.xml

<Context cachingAllowed="false">

这似乎不起作用。有什么建议吗?

【问题讨论】:

    标签: jsp web-applications tomcat facebook


    【解决方案1】:

    这似乎不起作用。有什么建议吗?

    cachingAllowed 属性实际上 配置服务器端缓存,而不是您似乎期望的客户端缓存。

    客户端缓存将使用适当的响应标头完成。要完全禁用特定资源上的客户端缓存,您需要创建一个Filter,它侦听所需的url-pattern,并在doFilter() 方法中至少包含以下几行:

    response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
    response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
    response.setDateHeader("Expires", 0); // Proxies.
    

    responseHttpServletResponse,它是从 doFilter() 方法的第二个 ServletResponse 参数转换回来的。

    在测试这一切之前不要忘记清除客户端缓存(因此,在 webbrowser 配置中):)

    【讨论】:

      【解决方案2】:

      似乎问题出在客户端浏览器缓存它,尝试在您的请求中附加一个随机数。喜欢__rnd__= Math.random()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-14
        • 2011-02-09
        • 2014-06-24
        • 1970-01-01
        • 2014-01-15
        • 1970-01-01
        相关资源
        最近更新 更多