我只是想使用XHR预缓存一些资源,但缓存的行为并不如预期。
问题的范围如下:
- 我事先知道这些资源的URL(当然)。
- 我不知道它们的内容类型(CSS、图像和其他的混合)。
- 它们总是同源的。
- 我控制缓存标头。
- 它们可以永久缓存,我不在意。
我一直以为XHR会像其他资源一样使用浏览器缓存,但从未经过严格测试。这就是我正在做的事情:
- 使用XHR预先请求所有资源。
- 显式设置请求头
Cache-Control: max-age=3600
(Chrome由于某种原因设置了max-age=0
)。 在服务器上设置以下响应标头:
Cache-control: public; max-age=3600
Date: now
Expires: now + 1 hour
[Content-Type, Content-Length]
这是我看到的情况:
- XHR始终获取资源(在服务器和开发工具中确认)。
- 在冷缓存中,后续请求(通过图像/CSS等元素)始终获取(即使XHR已经完成)。
- 但它们总是在缓存变热时使用缓存。
我以各种方式试探过它,但这种行为似乎从未改变。
<script>
/<img>
元素吗? - Nelson Menezes