【问题标题】:Are page initiated ajax request cached invalidated when the Reload button is pressed?按下 Reload 按钮时,页面发起的 ajax 请求缓存是否失效?
【发布时间】:2016-05-02 11:34:33
【问题描述】:

当您按下浏览器的重新加载按钮,并且在 jQuery 文档上执行缓存的 ajax 调用时会发生什么?您会获得缓存副本,还是会因为按下重新加载按钮而使缓存失效。后续问题,页面完全重新加载后,用户在页面上发起的操作所进行的ajax调用缓存是否会失效?

根据我正在开发的应用程序的个人测试,点击重新加载按钮会使页面上进行的 ajax 调用的缓存无效。

我已查找此信息,最接近的是 Mozilla Developer Network 上的缓存常见问题解答。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ

对我来说,将 ajax 请求与页面重新加载分开进行是有道理的,但正如我在个人测试中提到的那样,情况似乎并非如此。对于某些背景,我在 VendorList 操作上使用 ASP.NET MVC,并将 OutputCache 设置为 Location = Client。

以下是 Chrome 开发者工具“网络”选项卡上记录的请求:

缓存了 VendorList 的请求

Reload 按钮发起的请求,注意 VendorList 未缓存

供应商列表非缓存请求详细信息

【问题讨论】:

  • 你只会得到静态资源(如 js、css、img 文件)的缓存副本。再次发出任何其他 get/post 请求。
  • ajax调用的action方法配置为使用私有缓存。但是,重新加载页面似乎会使 ajax 请求的缓存无效。这种行为对我有帮助,但我无法解释或相信它会在生产环境和跨浏览器中起作用。
  • 如果缓存在回发期间持久存在,您需要在浏览器控制台中检查。我不明白为什么缓存对象会在重新加载时消失。
  • 我也不知道为什么,但这似乎是行为。包含浏览器开发工具屏幕截图作为证据。

标签: jquery ajax caching browser


【解决方案1】:

当您重新加载网页时,会再次进行 Ajax 调用,所有这些调用。然后,页面是否被缓存并不重要,它会独立地创建所有 ajax 调用。

如果你想避免缓存网页,一个很好的相关提示是按 Ctrl + F5 重新加载。

此外,如果您需要为服务器节省一些资源,您可以创建服务器端缓存的 ajax 调用。

【讨论】:

  • 不受重载按钮影响的 ajax 请求缓存对我来说是有意义的,但它与我的测试不匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-25
  • 2017-08-23
  • 2018-04-27
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 2019-12-10
相关资源
最近更新 更多