2010-12-02 68 views
1

我有一个在VS 2010中编写的ASP.NET 3.5 Web应用程序。我有一个脚本引用驻留在脚本文件夹中的.js文件的aspx。本地主机上的jQuery脚本缓存

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 
<script src="Scripts/HeaderControl.js" type="text/javascript"></script> 

的.js文件中的文件我使用jQuery做一些各种操作,其中之一是仅仅是用来警惕吐出页面上的价值,所以我可以看到它是一个调试语句。

if ($) { 
    $(document).ready(function() { 
     $("input[id='q']").click(function($e) { 
      alert("clicked"); 
     }); 
    }); 
} 

这一切都很好,直到我去除调试语句(警告“点击”)。在完全从.js中删除它之后,我重建了该项目,并按F5在本​​地计算机上运行它,但只要点击上面的输入标记,警报仍会弹出并显示“已单击”。我试着让一个又一个试图让web应用程序意识到.js已被更改,但每次单击输入标记时都会一直显示警报。我终于决定将.js重命名为完全不同的东西,当时Web应用程序意识到.js已被更改,并且当我点击输入标签时它会停止显示警报。

那么为什么这个.js文件被缓存呢?这是一个非常恼人的行为,我很想知道究竟是什么导致了它。任何帮助,将不胜感激。谢谢!

编辑: 浏览器是IE7。我没有检查它是否也在Mozilla中。无论如何,我已经完成了至少100个不同的.js文件,而且我从未注意过这种行为。我唯一的区别是,这个.js是在一个web应用程序中,而通常我在ASP.NET网站项目中创建它们。

+0

您正在使用哪种浏览器,您要安装哪些其他附加组件,您是否尝试清除缓存,是否尝试进行硬刷新? – jcolebrand 2010-12-02 17:24:10

+0

如果我没有记错,可以在IE中按Ctrl + F5来强制缓存刷新。试一试。 – RabidFire 2010-12-02 17:24:38

回答

3

您需要Shift +刷新,或者,只需清除浏览器的缓存。

这是正常现象:

的JavascriptCSS文件根据发送的响应缓存头甚至不检查新版本(一个If-Modified-Since要求),如果旧版本仍然有效第一次。

我相信如果你把任何查询字符串,即使只是?,在网址的末尾(即Scripts/jquery-1.4.1.min.js?),一些浏览器(Firefox至少)将会改变,以检查文件的新版本就像它将用于图像一样。这在开发过程中很有用。

某些开发人员还会在文件(?123)上附加一个版本,以便在发布新版本的Web应用程序时,它们可以使浏览器完全忽略缓存。我不确定这是多么有效,如果你已经有一个问号在最后,因为它会无论如何寻找一个更新的版本(再次,不知道所有的浏览器)。