我正在构建一个asp.net网站(使用HTML、C#、jQuery..)。
然后。网站已发布。
然后。我有一些错误需要修复的javascript代码文件。
我修复了它并重新发布了网站。
但是,浏览器保存缓存或其他浏览数据,用户没有得到固定的版本。
那么,当我修改一些小代码或修复js文件中的小错误时,如何手动(通过javascript、jquery或C#)清除用户的浏览数据或缓存?我不能对用户说“你必须清除浏览数据才能获得新版本!”
谢谢。
发布于 2017-03-23 15:11:39
这可能不能直接回答你的问题,但是如果你使用像webpack这样的捆绑包或者像gulp这样的任务运行器,你实际上可以用hashkey生成文件。
例如,捆绑器将生成js文件的生产版本,如下所示
myFile.d587bbd6e38337f5accd.js
d587bbd6e38337f5accd
是由绑定器生成的散列键&它将由绑定器本身注入。在这种情况下,每个版本都会有一个修改了散列键的js文件。因此它不会从缓存中加载
您可以查看此以了解它
发布于 2017-03-23 15:25:26
在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>
添加到页面的末尾,浏览器将像加载任何其他脚本标记一样加载该页面。
发布于 2017-03-23 15:03:15
你可以尝试使用window.location.reload(true)在页面上设置刷新,理论上这将忽略所有缓存的文件,并为用户检索网站的新副本。
也许创建检查,将刷新页面,如果它不是最新的。
https://stackoverflow.com/questions/42969140
复制相似问题