我有一个Web应用程序,允许浏览器长时间缓存AJAX请求结果。当检测到可能的修改时,我已经找到了如何发出完全绕过缓存的请求。但我希望允许用户触发数据刷新。
在这种情况下,我希望浏览器向服务器查询缓存是否停滞,但如果没有停滞(即服务器响应304代码),则使用它。目标是节省加载时间,因为数据很大。
服务器在所有响应中都包括以下标头:
我还发现在服务器响应中使用
但是,有没有办法仅针对客户端决定的一个精确请求进行重新验证?
请注意,我并不特别关注使用HTTP头部来完成此操作,因此欢迎任何其他我可能不知道的方法!
在这种情况下,我希望浏览器向服务器查询缓存是否停滞,但如果没有停滞(即服务器响应304代码),则使用它。目标是节省加载时间,因为数据很大。
服务器在所有响应中都包括以下标头:
Cache-Control: private, max-age=604800
Last-Modified: ... # actual last modification date
我使用以下HTTP头在请求中成功地在Chrome(尚未测试其他浏览器)完全破坏了缓存对象:
Cache-Control: max-age=0
If-Last-Modified: Tue, 01 Jan 1970 01:00:00 +0100
If-Last-Modified
这一行是真正起作用的。Chrome似乎忽略了请求中的Cache-Control
头部信息。我还发现在服务器响应中使用
Cache-Control: must-revalidate
会强制浏览器对每个请求都与服务器验证其缓存。但是,有没有办法仅针对客户端决定的一个精确请求进行重新验证?
请注意,我并不特别关注使用HTTP头部来完成此操作,因此欢迎任何其他我可能不知道的方法!
If-Last-Modified
与最后一个Last-Modified
响应头即可。 - Ja͢ck