禁用客户端缓存的最佳方法

时间:2009-06-12 07:59:23

标签: http caching

我正在使用一个简单的servlet过滤器,强制浏览器跳过某些服务器资源的缓存:

    Cache-Control: private
    Pragma: 

这在Internet Explorer中运行良好,但它不适用于Firefox 3.0.10。我结束了写这段代码:

    Cache-Control: no-cache, no-store, must-revalidate, max-age=-1
    Pragma: no-cache, no-store
    Expires: -1 // -1 is the unix time, the client receives a date in 1969 :)
    Last-Modified: -1 // ditto

这迫使firefox不进行任何缓存。其他浏览器怎么样?没有适用于主流浏览器的缓存标头的最佳实践怎么样?

2 个答案:

答案 0 :(得分:7)

Drupal 6这样做(适用于我所知道的每个浏览器):

  • Expires :Sun,1978年11月19日05:00:00 GMT
  • 上次修改:星期五,2009年6月12日08:01:46 GMT(实际修改日期)
  • 缓存控制:存储,无缓存,必须重新验证,后检查= 0,预检查= 0

此实例中没有pragma标头。我不确定为什么你的例子不起作用,它可能是负时间戳,这适用于~250.000 Drupal站点:)

答案 1 :(得分:1)

您的初始解决方案无法可靠地运行,因为:

  • Cache control用于指定请求/响应链中所有缓存机制必须遵守的指令。我所知道的唯一机制是代理,因此用户代理不受其约束。
  • Pragma:标头不包含值。就HTTP协议而言,我不确定它是否合法。
相关问题