防止浏览器javascript缓存问题的最佳做法

时间:2017-01-11 12:34:01

标签: javascript c# browser-cache

作为开发人员,我们都遇到了这个问题:您需要在网站上进行维护并且有客户脚本:foo.js现在您对foo.js进行了更改并进行了测试,检查,部署测试环境中的新代码。 现在,测试用户声称您没有解决问题,因为他的浏览器仍然保留缓存中的旧foo.js

我正在考虑创建文件内容的哈希并在文件名中使用它。 foo_8c736521.js 我可以创建哈希 - >重命名文件 - >并更新BundleConfig.cs 但我希望这可以在visual studio中自动完成。

是否有某种类型的库可以在C#.NET中为我处理这个?

我已将此转换添加到我的web.Test.config文件中:

  <system.web>
        <compilation debug="false" targetFramework="4.5"  xdt:Transform="Replace" />
  </system.web>

现在,在此环境中启用了Bundle优化。它有效。

1 个答案:

答案 0 :(得分:3)

如果您使用的是ASP.NET 4.5或更高版本,请使用内置的JS Bundler。它将跟踪包中包含的JS文件的更改,并仅在文件发生更改时发出新的哈希。

public class BundleConfig {
    public static void RegisterBundles(BundleCollection bundles) {
         bundles.Add(new ScriptBundle("~/bundles/custom").Include(
             "~/Scripts/foo.js",
             "~/Scripts/bar.js"
         ));
    }
}

对于MVC - 在Global.asax中注册包:

protected void Application_Start() {
    // ...
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

请参阅ASP.NET - Bundling and Minification