如何强制IE重新加载JavaScript?

我在Vista上使用IE 8,每次我改变一个JavaScript文件,然后开始debugging,我不得不按Ctrl + F5重新加载我的JavaScript。 有没有什么办法可以让我在开始debugging的时候自动重新加载javascript,但是在浏览网页时不会失去性能上的提升?

是啊,我知道你可能不喜欢IE浏览器,但请记住,问题不是“什么是最好的浏览器?”。

在URL的末尾添加一个string以中断caching。 我通常做(与PHP):

<script src="/my/js/file.js?<?=time()?>"></script> 

所以每次在我工作的时候都会重新加载,然后在生产时就把它拿下来。 实际上,我把这个抽象出来多一点,但是这个想法是一样的。

如果您查看本网站的来源,他们会以类似的方式在url末尾添加版本号,以便在更新javascript文件时强制更改。

保罗的一般想法(即有效地改变请求的一部分uri)是你最好的select。 不过,我build议使用更新的静态值,例如在更改脚本文件时更新的版本号,以便仍然可以获得caching的性能提升。

所以要么是这样的:

 <script src="/my/js/file.js?version=2.1.3" ></script> 

或者可能

 <script src="/my/js/file.2.1.3.js" ></script> 

我更喜欢第一个选项,因为这意味着您可以维护一个文件,而不必不断地重命名它(例如,在源代码pipe理中保持一致的版本历史logging)。 当然,其中一个(正如我所描述的)每次都会涉及到更新包含语句,所以您可能想要采取一种dynamic的方式来实现,比如每次部署时用一个dynamic的replace固定值(使用Ant或其他)。

当您使用网页或JavaScript文件时,您希望每次更改它时都要重新加载它。 您可以更改IE 8中的设置,以便浏览器永远不会caching。

按照这个简单的步骤。

  1. select工具 – > Internet选项。
  2. 在常规选项卡中,单击浏览历史logging部分中的设置button。
  3. 点击“每次访问网页”单选button。
  4. 点击确定button。

如果你正在寻找只在你的浏览器(也就是不要强迫你的用户)这样做,那么我不会设置你的代码不使用caching。 正如何塞所说,有一个性能损失。

而且我不会closuresIE上的caching,因为你失去了你访问的每个网站的性能增益。 您可以告诉IE始终从服务器刷新特定站点或浏览会话:

  1. 打开IE开发者工具
  2. 从菜单中selectcaching
  3. 单击以选中“总是从服务器刷新”

或者,对于键盘快捷方式(如我自己)在那里..

  • F12,Alt + C,向下箭头,Alt + R。

注意事项 :说到这一点…请记住,如果您以不同的方式进行开发/testing,而不是在生产环境中查看网站,则可能会产生混合结果。 这个caching问题就是一个很好的例子。 我们发现IEcaching我们的Ajax调用,而不是从GET方法更新结果的问题。 如果我们在IE中禁用了caching,那么我们就不会在开发中看到这个问题,并且会把它部署到这样的生产环境中。

在JavaScript中,我认为这是不可能的,因为现代浏览器有一个安全的政策在JavaScripts ..清理caching是一个非常违反。

你可以尝试添加

 <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 

在你的头上,但你会有性能损失。

这应该为ASP.NET做的伎俩。 这个概念和PHP例子中的一样。 由于每次加载脚本URL都不相同,所以代理浏览器都不应该caching文件。 我习惯把我的JavaScript代码放到单独的文件中,并用Visual Studio浪费了大量的时间,直到我意识到它不会重新加载JavaScript文件。

 <script src =“Scripts / main.js?version = <%= DateTime.Now.Ticks.ToString()%>”type =“text / javascript”> </ script>

完整的例子:

 <%@ Page Title =“Home Page”Language =“C#”MasterPageFile =“〜/ Site.master”AutoEventWireup =“true”
     CodeBehind =“Default.aspx.cs”Inherits =“WebApplication1._Default”%>

 <asp:Content ID =“HeaderContent”runat =“server”ContentPlaceHolderID =“HeadContent”>

    <script src =“Scripts / jquery-1.4.1-vsdoc.js”type =“text / javascript”> </ script>  
    <script src =“Scripts / main.js?version = <%= DateTime.Now.Ticks.ToString()%>”type =“text / javascript”> </ script>
     <script type =“text / javascript”>

         $(document).ready(function(){
                                 myInit();
                           });

     </ SCRIPT>
 </ ASP:内容>

很显然,这个解决scheme只能在开发阶段使用,在发布站点之前应该被移除。

为了避免在开发网站的时候在IE标签中反复按F5,使用ReloadIt 。

在这里输入图像说明

对于IE中显示的每个网页,您可以configuration一个文件名,一个目录或一组目录。 如果在这些configuration的path中发生任何改变,ReloadIt刷新IE标签。 一个简单的工具。 它只是工作。

这将重新加载一切,不只是JavaScript。

在您的URL末尾添加修改js文件的date。 用PHP它看起来像这样:

 echo '<script type="text/javascript" src="js/something.js?' . filemtime('js/something.js') . '"></script>'; 

每次更新脚本时都会重新加载。

如果您正在运行ASP.Net,请查看ASP.Net 4.5中的捆绑和缩小模块。

http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

你可以声明一个指向你的JavaScript文件的“包”。 每当你的文件改变,它会产生一个新的查询string后缀…但只会在文件更改时这样做。 这使得部署更新变得非常简单,因为您甚至不必考虑使用新的版本号来更新标签。

它也可以将多个.js文件捆绑到一个文件中,并将它们缩小,一步到位。 同上的CSS。