hkB*_*sai 6 browser firefox google-chrome
这两件事做完全相同的事情吗?:
我问这个是因为我遇到第一种方法需要更多时间来刷新 Chrome 中的页面。相反,在 Firefox 中,第一种方法刷新页面所需的时间更少。
请回答最新版本的 Mozilla Firefox 和 Google Chrome。
F5(Reload/Refresh) 重新提交当前请求,包括任何 POST(提交的表单)数据。将使用浏览器缓存。
按ENTER地址栏中的 会对该 URL 发出新请求。不会重新提交表单数据。将使用浏览器缓存。
我不确定为什么这两种方法在 Chrome 和 Firefox 之间存在性能差异。我怀疑这归结于他们的缓存机制的差异。
虽然 w3d 的 F5 和 Enter 都将使用缓存的说法在技术上基本上是正确的,但它具有误导性。细节决定成败。
当按下回车键时,浏览器可能会从缓存中加载任何资源,而无需重新检查它们,具体取决于过期时间(httpExpires标头)和其他 http 标头。这意味着大多数资源的加载速度与磁盘或 RAM 的响应速度一样快,如果资源位于 RAM 中,加载速度可能小于 1 毫秒。
另一方面,按 F5 将始终向服务器发送一个请求,其中的If-Modified-Since请求标头带有当前缓存的资源版本的时间戳。然后,服务器将响应一个200 OK状态代码,后跟数据,或者一个304 Not Modified状态代码。对于静态资源,这很可能是一种304状态,浏览器将从缓存加载资源。换句话说,浏览器在收到服务器响应之前不允许从缓存加载资源。因此,当按F5时,即使资源可能没有完全重传,资源的加载时间仍然受到网络延迟和服务器响应时间的影响。每个资源可能需要 50-100 毫秒或更长时间。
这种行为可以通过浏览器内置开发工具的网络功能观察到。control您可以通过按+ shift+自行打开开发工具I,选择网络并观察以不同方式重新加载页面时会发生什么。在 Chrome 中,您将看到当按 Enter 时,直接从缓存加载的资源将具有 status200 OK和 size (from cache)。在 Firefox 中,直接从缓存加载的资源甚至不会显示在网络视图中。另一方面,当按 F5 时,所有资源的请求都会发送到服务器,服务器大多会以状态进行响应304。
| 归档时间: |
|
| 查看次数: |
3416 次 |
| 最近记录: |