我在Vista上使用IE 8,每次更改javascript文件后开始调试时,都需要按Ctrl+F5重新加载我的javascript。有没有办法使它在开始调试时自动重新加载javascript,但在仅浏览网络时不失去性能优势?
是的,我知道你可能不喜欢IE,但请记住问题不是“什么是最好的浏览器?”。
我在Vista上使用IE 8,每次更改javascript文件后开始调试时,都需要按Ctrl+F5重新加载我的javascript。有没有办法使它在开始调试时自动重新加载javascript,但在仅浏览网络时不失去性能优势?
是的,我知道你可能不喜欢IE,但请记住问题不是“什么是最好的浏览器?”。
在您的URL末尾添加一个字符串以打破缓存。 我通常使用以下方法(使用PHP):
<script src="/my/js/file.js?<?=time()?>"></script>
为了在我工作时每次重新加载它,并在进入生产环境时将其取消。实际上,我会更加抽象化,但是这个想法保持不变。
如果你查看这个网站的源代码,他们以类似的方式将修订号附加到URL的末尾,以强制我们在更新JavaScript文件时进行更改。
保罗的一般思路(即有效更改请求URI的某些部分)是您最好的选择。但是,我建议使用更静态的值,例如版本号,在更改脚本文件时更新,以便仍然可以获得缓存的性能提升。
因此,可以尝试像这样的代码:
<script src="/my/js/file.js?version=2.1.3" ></script>
或者可能是
<script src="/my/js/file.2.1.3.js" ></script>
我更喜欢第一种选项,因为这意味着您可以维护一个文件而不是不断地重命名它(例如,在源代码控制中保持一致的版本历史记录)。当然,无论哪种选项(如我所描述的),都需要每次更新您的包含语句,因此您可能需要想出一种动态的方法来完成它,例如每次部署时使用 Ant 或其他工具替换固定值为动态值。
<script src="/my/js/file.js?version=2.1.3" ></script>
这在IE 11上不起作用。 - Afnan Ahmad当您处理网页或JavaScript文件时,希望每次更改后它都会重新加载。 您可以更改IE 8的设置以使浏览器永远不缓存。
按照以下简单步骤。
工具 > Internet选项 > 常规 > 浏览历史记录 > 设置 > 临时互联网文件 > 检查是否有更新版本的存储页面:每次访问网页
- paulsm4这对于ASP.NET应该管用。概念与PHP示例中所示相同。由于每次加载脚本时URL都不同,因此浏览器或代理都不应缓存文件。 我习惯将JavaScript代码放入单独的文件中,并且在使用Visual Studio时浪费了大量时间,直到我意识到它不会重新加载JavaScript文件。
<script src="Scripts/main.js?version=<% =DateTime.Now.Ticks.ToString()%>" type="text/javascript"></script>
完整示例:
<%@ Page Title="主页" 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:Content>显然,这个解决方案只应在开发阶段使用,并在发布网站之前删除。
(new FileInfo(Assembly.GetExecutingAssembly().Location)).LastWriteTime.ToString("yyyyMMddhhmm");
。 - akopecho '<script type="text/javascript" src="js/something.js?' . filemtime('js/something.js') . '"></script>';
当您更新脚本时,每次都会重新加载它。
http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification
你可以声明一个指向JavaScript文件的"bundle"。每当文件更改时,它将生成一个新的查询字符串后缀...但仅在文件更改时才会这样做。这使得更新部署变得非常简单,因为您甚至不必考虑使用新版本号更新您的标签。<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
虽然可以将其放在头文件中,但会导致性能损失。