【发布时间】: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 开发者工具“网络”选项卡上记录的请求:
【问题讨论】:
-
你只会得到静态资源(如 js、css、img 文件)的缓存副本。再次发出任何其他 get/post 请求。
-
ajax调用的action方法配置为使用私有缓存。但是,重新加载页面似乎会使 ajax 请求的缓存无效。这种行为对我有帮助,但我无法解释或相信它会在生产环境和跨浏览器中起作用。
-
如果缓存在回发期间持久存在,您需要在浏览器控制台中检查。我不明白为什么缓存对象会在重新加载时消失。
-
我也不知道为什么,但这似乎是行为。包含浏览器开发工具屏幕截图作为证据。
标签: jquery ajax caching browser