强制AJAX请求使用服务器重新验证缓存,而无需完全重新加载

rix*_*ixo 8 javascript ajax http cache-control browser-cache

我有一个Web应用程序,可以让浏览器长时间缓存AJAX请求.我已经找到了如何在检测到可能的修改时提出完全绕过缓存的请求.但我想让用户触发数据刷新.

在这种情况下,我希望浏览器检查服务器是否停止缓存,如果不缓存则使用它(即,如果服务器响应304代码).目标是节省加载时间,因为数据量巨大.

服务器在所有响应中包含以下标头:

Cache-Control: private, max-age=604800
Last-Modified: ... # actual last modification date
Run Code Online (Sandbox Code Playgroud)

我设法通过在请求中使用以下HTTP标头完全在Chrome中破解了缓存对象(尚未测试其他浏览器):

Cache-Control: max-age=0
If-Last-Modified: Tue, 01 Jan 1970 01:00:00 +0100
Run Code Online (Sandbox Code Playgroud)

If-Last-Modified条线是真正具有效果的线.Chrome似乎忽略Cache-Control了请求中的标头.

我还发现Cache-Control: must-revalidate在服务器响应中使用强制浏览器为每个请求验证其缓存与服务器.

但有没有办法重新验证只有一个精确的请求,在客户端决定

请注意,我并没有特别依赖于使用HTTP标头执行此操作,因此欢迎任何其他我不了解的方法!

bro*_*man 2

您可以添加一个 url 参数,该参数的值基于时间来清理缓存,以便仅针对一个精确请求。

$.ajax({
    url:"/questions?nocache="+Date.now(),
    "success":function(data){
         console.log(data);
    }
});
Run Code Online (Sandbox Code Playgroud)