关于浏览器缓存有很多答案,但大多数都是关于打开或关闭缓存或请求对某些静态资源(如 js 或图像)使用不同的 url。
- 我正在通过 ajax 请求加载 json 数据
- 这是动态内容,例如任务列表
- 我只想在用户执行特定操作时进行更新。在那之前它可以被永久缓存。
当用户执行该操作时,我想使缓存失效并从服务器获取新版本。
有没有办法在不更改 url 的情况下清除浏览器本地缓存。因此,/tasks 会被缓存到明年。我想使其无效并强制将来请求/tasks 以获取新数据和新的过期 header 。
不允许浏览器缓存并在服务器上缓存请求/数据会更好吗?
另一个类似的问题: Forcing AJAX request to revalidate cache with server, without reloading completely
最佳答案
带有 cache: false
的 foreach 请求 jquery 会添加一个时间戳作为 get 参数,因此该请求是唯一的并且不会被缓存
$.ajax({
url:"example.php"
cache:false
});
引用jquery docs : 缓存(默认值:true,对于数据类型“script”和“jsonp”为 false) 类型: bool 值 如果设置为 false,将强制浏览器不缓存请求的页面。注意:将缓存设置为 false 只能正确处理 HEAD 和 GET 请求。它的工作原理是将“_={timestamp}”附加到 GET 参数。其他类型的请求不需要该参数,但在 IE8 中,当对已通过 GET 请求的 URL 进行 POST 时除外。
关于javascript - 有选择地强制浏览器缓存清除 Ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28887241/