有选择地强制浏览器缓存以清除Ajax请求

时间:2015-03-05 20:36:56

标签: javascript ajax caching backbone.js

对于浏览器缓存有很多答案,但大多数是关于打开或关闭缓存或请求使用不同的URL来处理某些静态资产(如js或图像)。

  • 我正在通过ajax请求加载json数据
  • 这是动态内容,比如任务列表
  • 我只想在用户完成某项操作时更新。在此之前,它可以永久缓存。
  • 当用户执行该操作时,我想使缓存无效并从服务器获取新版本。

    1. 有没有办法在不更改网址的情况下清除浏览器本地缓存。因此,/ tasks被缓存到明年。我想使其无效并强制将来/ tasks的请求获取新数据和新的expires头。

    2. 我最好不允许浏览器缓存并在服务器上缓存请求/数据吗?

另一个类似的问题: Forcing AJAX request to revalidate cache with server, without reloading completely

1 个答案:

答案 0 :(得分:-1)

使用cache: false jquery的foreach请求会将时间戳添加为get paramater,因此请求是唯一的并且不会被缓存

$.ajax({
    url:"example.php"
    cache:false
});

指的是jquery docs: cache(默认值:true,false,对于dataType'script'和'jsonp') 类型:布尔值 如果设置为false,它将强制浏览器不缓存请求的页面。注意:将缓存设置为false只能与HEAD和GET请求一起正常工作。它的工作原理是将“_ = {timestamp}”附加到GET参数。其他类型的请求不需要该参数,但在IE8中,当对已经由GET请求的URL进行POST时,该参数除外。