【问题标题】:Caching jQuery REST Ajax Response in all the Browsers在所有浏览器中缓存 jQuery REST Ajax 响应
【发布时间】:2013-06-21 17:18:42
【问题描述】:

如何在所有浏览器中缓存JSON对象的jQuery Ajax REST API响应,主要在Firefox、Mozilla、Chrome、IE8中

【问题讨论】:

  • 发送适当的缓存头。相关:cache in the browser -- tools and theory
  • 相关链接没有正确答案,我还需要有关如何实施它的示例和干净注释。
  • 有没有人找到任何一种解决方案?
  • 我不太确定你的问题是否正确......但这可能会有所帮助:github.com/kpuputti/JSONCache
  • 谢谢!查看我已明确更新的问题以便更好地理解。

标签: jquery performance web-services cross-browser


【解决方案1】:

恕我直言,没有跨浏览器解决方案可以强制使用 javascript 缓存 API 请求。哟将需要@Gotschi 推荐的替代方法。

最好也是最常见的方法是按照@Pekka 웃 的建议​​在您的 API 上发送 cacing 标头。

您必须在 API 响应中设置 cache-control 标头:

示例(强制 1h 缓存 = 3600 秒):

Cache-Control: max-age=3600, private

私有属性表示响应消息的全部或部分是针对单个用户的,并且不得由共享缓存进行缓存。

如果您使用的是 PHP,您可以像这样发送标头(在任何输出之前,如 echo):

<?php
header('Cache-Control: max-age=3600, private');

您也可以使用您的 apache 配置或 .htaccess 文件:

Header set Cache-Control "Cache-Control: max-age=3600, private"

确保不要在jQuery.ajax 中使用{cache:false}

【讨论】:

  • Nice 但是My Case在页面加载后不同,Ajax会调用一些点击事件
  • 我不明白你的意思。大多数 ajax 请求是在用户交互(如点击)之后触发的。这对我的回答没有影响。最好能提供一个例子。
  • 所以你是说没有选项可以在 javascript 中进行缓存?
  • 对。正如@Gotschi 已经推荐的那样,您必须使用 cookie、localstore 等手动存储数据。如果您可以控制 API,则应使用符合标准的标头。
猜你喜欢
  • 2013-06-10
  • 1970-01-01
  • 2017-07-16
  • 2017-06-13
  • 2011-04-23
  • 2014-03-08
  • 2018-05-08
  • 2014-01-07
相关资源
最近更新 更多