我正在构建一个asp.net网站(使用HTML,C#,Jquery ......)
然后。网站发布。
然后。我有一些bug需要修复javascript代码文件
我修复了它并重新发布了网站
但是,浏览器保存缓存或其他浏览数据,并且用户没有获得固定版本
那么,当我更改一些litle代码或修复js文件中的小错误时,如何手动清除浏览数据或手动缓存(通过javascript,jquery或C#)?我不能跟用户这么说“你必须清除浏览数据以获得新版本!”
感谢。
答案 0 :(得分:1)
这可能无法直接回答您的问题,但如果您使用任何捆绑包(如webpack)或任务运行程序(如gulp),您实际上可以使用哈希键生成文件。
例如,bundler将生成js文件的生产版本为
myFile.d587bbd6e38337f5accd.js
d587bbd6e38337f5accd
是由Bundler&生成的哈希密钥。它将由捆绑器本身注入。在这种情况下,每个版本都将有一个带有修改的哈希密钥的js文件。所以它不会从缓存中加载
您可以查看此LINK以了解相关信息
答案 1 :(得分:1)
如果javascript使用cacheBustingUrl,其格式在下面给出,它附加到Date.Now(),这将解决缓存问题。
<script>
var scriptUrl = "/site/js/script.js",
cacheBustingUrl = scriptUrl + "?" + Date.now(),
newScriptElement = document.createElement("script");
newScriptElement.setAttribute("src",cacheBustingUrl);
document.body.appendChild(newScriptElement);
</script>
这应该附加一个新的脚本元素,如
<script src="/site/js/script.js?1404918388711"></script>
到页面的末尾,浏览器将像任何其他脚本标记一样加载。
答案 2 :(得分:0)
您可以尝试使用window.location.reload(true)在页面上设置刷新,理论上这将忽略所有缓存的文件并将新网站的副本检索给用户。
如果不是最新的,可以创建将刷新页面的检查。
答案 3 :(得分:0)
没有浏览器可以允许您删除其缓存。这是一个非常大的安全方面,但您可以通过在HTML中传递此元来阻止兑现
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
此外,您必须通过
关闭自动完成文本框formname.setAttribute( "autocomplete", "off" );