【问题标题】:Reload vs Refresh重新加载与刷新
【发布时间】:2011-06-04 20:05:31
【问题描述】:

我有这个脚本

<?php
header("Expires: Sat, 11 Jun 2011 00:00:00 GMT");
echo "Hello World";
?>

它只是写入“Hello World”并将缓存设置为下周六到期。

现在,当我在 FireFox 中加载此页面并单击重新加载按钮时,它会向服务器发出新请求以加载该页面,而不是仅从缓存中提供它(我想确保 last-modified 是否仍然有效)。

但是,如果我将光标放在地址栏上并按 Enter,FireFox 会提供缓存中的内容。

为什么会这样?为什么在第一种情况下(重新加载)它向服务器发出请求,但在第二种情况下(我猜是刷新?)它从缓存中提供服务?

【问题讨论】:

    标签: cache-control browser-cache


    【解决方案1】:

    我认为“刷新”和“重新加载”这两个词基本上是同义词。我在 RFC 2616 中看到了这一行,它描述了 HTTP/1.1 缓存,它提供了可能的细微差别:

    到期时间不能用于强制用户代理刷新其显示重新加载资源

    换句话说,也许您可​​以说刷新是为了显示,而重新加载是为了资源。但由于浏览器对资源的主要用途是显示,我看不出有什么区别。

    这里有一个short writeup,由一位处理浏览器缓存控制的开发人员提供。他喜欢的术语是:

    • 加载:在地址栏中点击Enter;点击链接
    • 重新加载F5Ctrl+R;工具栏的刷新按钮;菜单 -> 重新加载
    • 硬重载Ctrl+F5Ctrl+Shift+R

    (硬重新加载会强制浏览器绕过其缓存。对于 Firefox,您按住 Shift 并按下重新加载按钮。维基百科有 a list 说明如何为普通浏览器执行此操作。您可以测试它对this page的影响。)

    要回答有关 Firefox 如何决定何时刷新的问题,link from above 对此进行了解释:

    • 加载:在缓存的资源过期之前没有请求发生
    • reload:请求包含If-Modified-SinceCache-Control: max-age=0 标头,允许服务器在适用时以304 Not Modified 响应
    • 硬重载:请求包含Pragma: no-cacheCache-Control: no-cache 标头,将绕过缓存

    【讨论】:

      【解决方案2】:

      当人们刷新页面时,他们通常希望看到新的结果,因此缓存整个页面没有多大意义。

      【讨论】:

      • 我猜你说的是relaod?
      猜你喜欢
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 2016-12-05
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多