我怎样才能保证缓存ajax响应?

我想做一个ajax调用,但我想确保它会被缓存。 我正在使用jquery。

有没有办法确保请求保留在大多数流行浏览器的缓存中?

使用jQuery,您可能希望使用ifModified选项显式添加If-Modified-Since标头,默认情况下为false:

 $.ajax({ ... ifModified: true, ... }); 

还有一个cache选项,如果您的dataType是jsonpscript则需要强制为true。 对于其他数据类型,默认情况下都是如此。

有关这些选项的说明,请参阅jQuery.ajax()文档 。

浏览器可以缓存GET请求(取决于浏览器缓存大小等),但不会缓存POST。

问候。

我认为除非您指定不缓存,否则所有AJAX响应都会被缓存。 您还可以查看jQuery Cache (?)。

在http响应上设置适当的标头,例如Expires标头和Cache-control指令。

有关详细信息,请参阅此处 ,但简而言之,您需要设置标题以指示:

  • 资源应缓存一段时间(过期标头)
  • 该资源是可缓存的(Cache-control:public header)

或者,您可能希望让用户请求文件,但发回“未修改的resposne”,这样可以节省重新下载正文(对于大文件)。 在这种情况下,您应该使用响应标头来指示

  • 上次修改资源时(上次修改时间标题),允许客户端告诉服务器版本的年龄
  • 文件的电子标签,它是一种哈希码,可让服务器知道客户端的版本。 注意如何生成电子标签……在某些服务器上,etags会破坏负载平衡。

这两种方法将让客户端缓存响应,并减少重新下载响应的次数。 此外,我喜欢避免在可缓存的响应中设置cookie,因为一些缓存不会缓存具有cookie的响应,并且一些缓存会缓存响应,包括cookie,这两者都可能是不合适的。