如何防止在Internet Explorer中缓存jQuery Ajax请求?

SAB*_*ABU 270 jquery internet-explorer

如何在Internet Explorer中阻止jQuery Ajax请求缓存?

Nic*_*ver 516

您可以使用全局禁用缓存$.ajaxSetup(),例如:

$.ajaxSetup({ cache: false });
Run Code Online (Sandbox Code Playgroud)

这会在发出请求时向查询字符串附加时间戳.要为特定$.ajax()呼叫关闭缓存,请cache: false在本地设置它,如下所示:

$.ajax({
  cache: false,
  //other options...
});
Run Code Online (Sandbox Code Playgroud)

  • 需要注意的是:这会在您的网址中添加"?_ = somenumber".确保您的后端可以忽略URL查询参数中的"_". (11认同)
  • @Lumpy,根据[jQuery.ajax()文档](http://api.jquery.com/jQuery.ajax/),`cache:false`只能与HEAD和GET请求一起正常工作.另外,如果在`$ .ajaxSetup`中设置`cache:false`,根据[jQuery.ajaxSetup()文档](http://api.jquery.com/jQuery.ajaxSetup/),它将"设置默认值对于未来的Ajax请求." 所以是的,它将禁用所有未来HEAD和GET AJAX请求的缓存. (6认同)
  • +1为`cache:false`.关闭全局缓存似乎有点矫枉过正,但每个请求的控制是完美的.谢谢 (4认同)
  • 希望我以前见过这个全局设置项目.只是让我不必更新几十个人的电话. (2认同)
  • 我知道这是一个陈旧的答案,只是想知道这是否会影响所有ajax,如调用(ajax,get和post)或仅影响特定的ajax调用? (2认同)
  • 我认为默认情况下所有浏览器都不会缓存ajax.这只是IE的确如此.这个答案救了我.吓坏了IE,总是要与众不同. (2认同)

Kos*_*oss 21

如果设置了唯一参数,则缓存不起作用,例如:

$.ajax({
    url : "my_url",
    data : {
        'uniq_param' : (new Date()).getTime(),
        //other data
    }});
Run Code Online (Sandbox Code Playgroud)

  • 这就是`cache`参数已经在幕后做的事情. (11认同)

小智 12

Cache-Control: no-cache, no-store
Run Code Online (Sandbox Code Playgroud)

可以组合这两个标头值以在IE和Firefox上获得所需的效果

  • 问题是IE不总是听这个,不幸的是:) (12认同)
  • 它应该*适用于所有浏览器,是的...但有时IE只是喜欢缓存内容 (7认同)

DRK*_*DRK 5

这是一个答案提议:

http://www.greenvilleweb.us/how-to-web-design/problem-with-ie-9-caching-ajax-get-request/

我们的想法是在ajax查询中添加一个参数,例如包含当前日期的时间,因此浏览器将无法对其进行缓存.

看看链接,这是很好的解释.

  • 这就是`cache`参数已经在幕后做的事情. (12认同)