代码之家  ›  专栏  ›  技术社区  ›  resopollution

禁用挂架中的浏览器缓存

  •  2
  • resopollution  · 技术社区  · 16 年前

    我有一个action/json从服务器返回json。

    不幸的是,在IE中,浏览器喜欢缓存这个json。

    如何使其不缓存此操作?

    4 回复  |  直到 16 年前
        1
  •  2
  •   allyourcode    16 年前

    确保您的回复没有告诉浏览器内容将在将来过期。此控件有两个HTTP头。

    1. 到期
    2. 缓存控制-此标头有许多可能的值,但控制过期的值是max age=foo。

    304 Not Modified

    有两组标头控制重新验证:

    1. 上次修改+如果修改自

    Last Modified和ETag是响应头,它们告诉浏览器将要接收的资源的版本。如果不希望浏览器重新验证,请不要设置这些。If Modified Since和If None Match是浏览器用来报告过时资源的版本的相应请求头,它需要与服务器重新验证。

    有各种工具可以查看服务器将哪些HTTP头发送回浏览器。一个是Firefox扩展 Live HTTP Headers Steve Sounders 建议是 IBM Page Detailer . 我自己没有试过这个,但这不取决于你使用的浏览器。

        2
  •  3
  •   drr    16 年前

    Cache-Control: no-cache
    Pragma: no-cache
    Expires=-1
    
        3
  •  1
  •   user293152 user293152    16 年前

    这是一个常见的问题——IE在客户端缓存所有ajax/json请求。其他浏览器则不然。

    为了解决这个问题,生成一个随机数并将其作为变量附加到请求url中。这使我误以为这是新的要求。

    下面是一个javascript示例,您可以在Python中执行类似的操作:

    function rand() {
        return Math.floor(Math.random()*100000);
    }
    
    $("#content").load("/posts/view/1?rand="+rand());
    
        4
  •  1
  •   writes_on    15 年前