当焦点在地址栏中时,按“F5”和按“ENTER”是否有相同的效果?

hkB*_*sai 6 browser firefox google-chrome

这两件事做完全相同的事情吗?:

  1. 按下F5
  2. 单击地址栏(将焦点放在它上面),然后按ENTER

我问这个是因为我遇到第一种方法需要更多时间来刷新 Chrome 中的页面。相反,在 Firefox 中,第一种方法刷新页面所需的时间更少。

请回答最新版本的 Mozilla Firefox 和 Google Chrome。

MrW*_*ite 5

  1. F5(Reload/Refresh) 重新提交当前请求,包括任何 POST(提交的表单)数据。将使用浏览器缓存。

  2. ENTER地址栏中的 会对该 URL 发出新请求。不会重新提交表单数据。将使用浏览器缓存。

我不确定为什么这两种方法在 Chrome 和 Firefox 之间存在性能差异。我怀疑这归结于他们的缓存机制的差异。


nit*_*k01 4

虽然 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