如何使用 JavaScript 清除浏览器缓存?
我们部署了最新的 JavaScript 代码,但无法获取最新的 JavaScript 代码。
编者按:本题在以下地方半重复,以下第一题的答案可能是最好的。这个公认的答案不再是理想的解决方案。
如何使用 JavaScript 清除浏览器缓存?
我们部署了最新的 JavaScript 代码,但无法获取最新的 JavaScript 代码。
编者按:本题在以下地方半重复,以下第一题的答案可能是最好的。这个公认的答案不再是理想的解决方案。
您可以调用window.location.reload(true)重新加载当前页面。它将忽略任何缓存的项目并从服务器检索页面、CSS、图像、JavaScript 等的新副本。这不会清除整个缓存,但具有清除您所在页面的缓存的效果。
但是,您最好的策略是按照其他各种答案中提到的方式对路径或文件名进行版本控制。此外,请参阅Revving Filenames: don't use querystring因为不用?v=n
作版本控制方案的原因。
您无法使用 javascript 清除缓存。一种常见的方法是将修订号或上次更新的时间戳附加到文件中,如下所示:
myscript.123.js
或者
myscript.js?updated=1234567890
尝试更改 JavaScript 文件的 src?由此:
<script language="JavaScript" src="js/myscript.js"></script>
对此:
<script language="JavaScript" src="js/myscript.js?n=1"></script>
此方法应强制您的浏览器加载 JS 文件的新副本。
除了每小时或每周缓存之外,您可以根据文件数据进行缓存。
示例(在 PHP 中):
<script src="js/my_script.js?v=<?=md5_file('js/my_script.js')?>"></script>
甚至使用文件修改时间:
<script src="js/my_script.js?v=<?=filemtime('js/my_script.js')?>"></script>
您还可以强制每小时重新加载代码,就像这样,在 PHP 中:
<?php
echo '<script language="JavaScript" src="js/myscript.js?token='.date('YmdH').'">';
?>
或者
<script type="text/javascript" src="js/myscript.js?v=<?php echo date('YmdHis'); ?>"></script>