【发布时间】:2016-07-08 18:38:07
【问题描述】:
我的页面从https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js加载jQuery
在重复加载时,查看 chrome 开发工具网络选项卡,我看到 jquery.min.js 的返回状态为“304 Not Modified”,时间/延迟有时长达一秒。
我还可以在 devtools 中看到 jquery 的响应标头是 'Expires:Thu, 31 Dec 2037 23:55:55 GMT' ,但它仍然返回 304
对于我网站的其他文件,例如 cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js ,我看到返回状态为“200 OK”和“(来自缓存)”尺寸过小,并且它们的延迟/时间超短(我猜这意味着 100% 缓存结果,没有远程往返)
我如何告诉浏览器如果 jquery url 存在于缓存中以使用它没有任何远程流量?我需要尽可能快的网站加载时间。
谢谢!
【问题讨论】:
-
您的两个 JS URL 示例对我来说都按预期工作 - F5'ing 页面将从它们中获得 304,但在没有 F5'ing 的情况下加载页面(通过单击页面链接) 正在从缓存中完全提取这两个文件。你到底是如何测试的?
-
有趣 - 刷新似乎是导致问题的原因!为什么会这样?
-
使用 F5 刷新将始终向 Web 服务器请求所有资源 - 即使它们中的大多数会以 304 的形式返回。这是设计使然,是一件好事 - 用户通常不应该手动刷新页面,如果他们这样做了,那么您应该让他们有机会获得更新的资源。我建议通过打开 Fiddler 进行测试(只是为了避免在 Chrome 开发工具中查看缓存响应的噪音),并像普通用户一样行事,看看在普通用户会话期间实际发生了多少 HTTP 流量,看看是否有任何你真正可以调整的东西。
-
如果您发布答案,我会将其标记为已接受!
标签: javascript jquery html cdn