gpt4 book ai didi

cache-control - 重新加载与刷新

转载 作者:行者123 更新时间:2023-12-04 13:07:33 24 4
gpt4 key购买 nike

我有这个脚本

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

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

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

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

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

最佳答案

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

An expiration time cannot be used to force a user agent to refresh its display or reload a resource



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

这是一个 short writeup根据处理浏览器缓存控制的开发人员的条款。他更喜欢的术语是:
  • 加载:在地址栏中点击回车;点击链接
  • 重装:F5; Ctrl+R;工具栏的刷新按钮;菜单 -> 重新加载
  • 硬重载:Ctrl+F5; Ctrl+Shift+R

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

    要回答您关于 Firefox 如何决定何时刷新的问题,这里是 link from above解释它:
  • 加载:在缓存资源到期之前不会发生任何请求
  • 重新加载:请求包含 If-Modified-SinceCache-Control: max-age=0允许服务器以 304 Not Modified 响应的 header 如果适用
  • 硬重载:请求包含 Pragma: no-cacheCache-Control: no-cache header 并将绕过缓存
  • 关于cache-control - 重新加载与刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6239090/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com