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

时间:2018-11-29 11:54:14

标签: javascript html html5 browser-cache page-refresh

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

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

我正在使用打字稿。

有2个组成部分,

  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" />

他们都没有工作。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以使用CSS使JS / version control在客户端上保持最新状态。

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

<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的了解要有限得多。

答案 2 :(得分:0)

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

每次都会生成新的编号,因此您将获得新的文件版本。