更新javascript / jquery代码时清除浏览器网站数据

时间:2017-03-23 06:52:58

标签: javascript c# jquery caching cookies

我正在构建一个asp.net网站(使用HTML,C#,Jquery ......) 然后。网站发布。
然后。我有一些bug需要修复javascript代码文件 我修复了它并重新发布了网站 但是,浏览器保存缓存或其他浏览数据,并且用户没有获得固定版本 那么,当我更改一些litle代码或修复js文件中的小错误时,如何手动清除浏览数据或手动缓存(通过javascript,jquery或C#)?我不能跟用户这么说“你必须清除浏览数据以获得新版本!”
感谢。

4 个答案:

答案 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" );