【问题标题】:Does cache:true in ajax request is enough for saving bandwidth?ajax请求中的cache:true是否足以节省带宽?
【发布时间】:2018-10-09 23:53:32
【问题描述】:

我不想超出我在 Google 地图会员中的请求限制。通常请求是相同的,所以我不需要重新请求它们。

如果我这样做:

$.ajax({
  type: "GET",
  headers: {
    "Content-Type": "application/json"
  },
  cache: true,
  url: "https://maps.googleapis.com/maps/api/place/autocomplete/json?INPUT_AND_API_KEY_AND_SOME_OTHER_PARAMS",
  data: JSON.stringify(myData),
  success: function(response) {
    //code
  }
});

够了吗?

当我说够了, 我的意思是:不要根据以前的输入数据请求相同的数据, 或者我应该做一些更复杂的事情。

谢谢

【问题讨论】:

  • 不,这还不够。浏览器和服务器需要根据资源实际支持HTTP caching。只是cache:false 强制重新加载cache:true 不强制缓存。
  • 没有必要为 GET 设置 contentType 标头。没有请求内容

标签: javascript jquery ajax api caching


【解决方案1】:

据我所知,缓存选项会在您的请求中添加随机搜索查询,这会强制浏览器重新获取网址。通常浏览器供应商会根据从服务器发送的 cache-control 标头决定是否缓存(通常他们会,因此打开缓存选项将导致所需的行为)。

如果您想安全起见,您已经对数据进行了字符串化,因此您可以尝试将其存储在 localStorage 中,前提是它小于 5mb 并从那里重新使用.对于较大的有效负载,您将需要使用 indexedDb。

【讨论】:

  • 1.缓存选项添加随机搜索查询是什么意思,所以它最终会保存数据吗? 2. 我应该用我展示的示例中的标题更改某些内容吗? 3. 你的意思是,手动缓存数据而不是使用“神奇的关键字”:cache:true?
  • 不不,例如我可以提出../someFile.txt之类的请求。如果您再次请求该文件,浏览器将不会根据缓存控制标头重新请求它。但是如果你请求../someFile.txt?123124123,你会强制浏览器重新请求它。这种技术称为“缓存破坏”。所以这就是缓存选项的作用。
  • 是的,我请求相同的 url,缓存:true,我不更改参数。
  • 好吧,这意味着您将它留给浏览器来决定它应该在缓存中保留多长时间。如果默认的缓存控制或过期标头不存在,供应商将决定保留多长时间。如果设置了缓存控制头,那么只要你使用cache:true,直到头的过期时间都可以
  • 如果您使用的是 MongoDB,可能您使用的是 node.js,我通常在后端使用 Apache + php,如果文件以 js(+ 一些查询)结尾,那么我设置标题 @987654324 @。这是 1 周的缓存(对于谷歌 PSI 而言,几乎不会抱怨。)在你的情况下,这个 link 可能会让你走上正轨。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
相关资源
最近更新 更多