我有一个javascript应用程序,它通过RESTful API请求对象。在许多情况下,我需要在应用程序的不同部分获得相同的对象;而不是手动缓存它们(例如在对象内),我想利用浏览器缓存。
所以,我让服务器设置了Cache-control: public, max-age=30
标头,但显然响应并不总是来自缓存。
奇怪的是,如果两个条件都适用,似乎通过jQuery发出的请求只缓存 :
window
"load"
事件处理程序setTimeout(..., 0)
使用普通XMLHttpRequest
时,显然足以满足上述条件中的至少一个,以便使用缓存版本。
以下是完整的示例代码,以及HTTP响应等:https://gist.github.com/rshk/82ff17d16d363b6b71cf
有人对此有解释吗?
(我在window
加载处理程序中包装代码执行完全没问题,实际上它已经是,但是必须在setTimeout(..., 0)
中包装请求只是很奇怪..)。