Chrome:window.location.reload(true)-状态代码:200 OK(来自内存缓存),而不是来



我有一个包含大量JavaScript的web应用程序。如果我在服务器上更新了一些.js文件,但忘记重命名它们,我已经实现了以下功能,以防出现错误-页面将完全重新加载,放弃缓存的文件:

window.addEventListener('error', function (e) {
if(confirm("The application encountered an unexpected problem. Click OK to try restarting it")){
window.location.reload(true);
}
}

一切都很顺利。但Chrome上没有。window.location.reload(true)似乎没有从服务器加载新版本的文件,因为浏览器中的状态代码是:

Status Code: 200 OK (from memory cache)

如何使基于Chrome的浏览器在出现错误时使用JavaScript从服务器获取所有文件的新版本?请记住,所有.js文件都使用长期缓存指令,这就是我想要的方式。

后期编辑

这是我迄今为止的解决方案(在服务器端实现(:

<?php
$path = getcwd() . '/';
function lastFileStamp($file){
echo '"'.$path.$file.'?'.filemtime($path.$file).'"';
}
?>
<link rel="stylesheet" href=<?php lastFileStamp("../common/themes/test.css");?> />
<script src=<?php lastFileStamp("../common/date.js");?> ></script>
...

但这个解决方案并不能回答最初的问题:如何让基于Chrome的浏览器在出现错误时使用JavaScript从服务器获取所有文件的新版本?

您可以尝试使用eTag标头来确保浏览器正在从服务器下载最新版本的文件:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag.

最新更新