用户尝试刷新时如何硬刷新?

How to hard refresh when user tries to refresh?

当用户刷新网站时,我的网站出现缓存 svg 问题。但是当用户硬刷新时,问题就不存在了。

因此,当用户尝试刷新网站时,我希望它进行硬刷新。我该怎么做?

我正在使用打字稿。

这有两个组成部分,

  1. 了解用户想要刷新
  2. 用户的硬刷新

我也试过了

<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate, post-check=0, pre-check=0" />
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />

none 他们成功了。

尝试为您的资产添加一些时间戳。 src="your.svg?ts=321321323"

只需将 URL 的唯一查询添加到您的 html src 属性,例如使用时间戳:url + '?' + Date.now()

每次都会生成新的数字,所以你会得到新的文件版本。

您可以使用 version control.

在客户端上使 CSS/JS 保持最新

与使用时间戳相比的优势在于,它不会强制最终用户在每次刷新或登陆页面时都下载资源,相反,他们只会在有更新时下载文件。您可以手动执行此操作,例如:

<link rel="stylesheet" href="css/file.css?version=0.0.1" />

当然,这样做的问题是,您每次进行更改时都必须记住执行此操作。但这确实意味着用户只会下载已更改的特定文件。您可以使用像 PHP 这样的服务器端语言来创建一个变量,然后简单地附加到 ?version= 以执行 全面更新 ,您只需将变量值更改为更新。然而,这将在每次更新时更新 每个 个文件。

<?php $version = '0.0.1'; ?>

<link rel="stylesheet" href="css/file.css?version=<?php echo $version; ?>" />
<link rel="stylesheet" href="css/file2.css?version=<?php echo $version; ?>" />
<link rel="stylesheet" href="css/file3.css?version=<?php echo $version; ?>" />

可能有一种方法可以处理香草 JavaScript,但我对 JavaScript 的了解比我对 PHP 的了解要有限得多。