我想进行ajax调用,但我想确保它会被缓存。 我正在使用jquery。
有没有办法确保请求保留在大多数流行浏览器的缓存中?
答案 0 :(得分:8)
使用jQuery,您可能希望使用ifModified
选项显式添加If-Modified-Since标头,默认情况下为false:
$.ajax({
...
ifModified: true,
...
});
如果您的数据类型为cache
或jsonp
,则还需要script
选项强制为true。对于其他数据类型,默认情况下都是如此。
有关这些选项的说明,请参阅jQuery.ajax()
docs。
答案 1 :(得分:2)
浏览器可以缓存GET请求(取决于浏览器缓存大小等),但不会缓存POST。
问候。
答案 2 :(得分:1)
在http响应上设置适当的标头,例如Expires标头和Cache-control指令。
有关详细信息,请参阅here,但简而言之,您需要设置标题以指示:
或者,您可能希望让用户请求文件,但发回“未修改的resposne”,这样可以节省重新下载正文(对于大文件)。在这种情况下,您应该使用响应标头来指示
这两种方法将让客户端缓存响应,并减少重新下载响应的次数。此外,我喜欢避免在可缓存的响应中设置cookie,因为一些缓存不会缓存具有cookie的响应,并且一些缓存会缓存响应,包括cookie,这两者都可能是不合适的。
答案 3 :(得分:1)
我认为除非您指定不缓存,否则所有AJAX响应都会被缓存。您还可以查看jQuery Cache(?)。