来自aspx和cshtml页面的javascript参考刷新

时间:2016-08-23 18:54:38

标签: javascript asp.net asp.net-mvc webforms cdn

我们有一个包含多个aspx和cshtml页面的生产应用程序。这些页面指的是经常更改的多个javascripts。

由于我们正在使用CDN,因此每当对任何javascript文件进行更改时,我们都会在所引用的所有aspx / cshtml中手动对其进行版本控制。 例如: 如果abc.aspx有[script src =" abc.js?v = 1"]并且我们对abc.js进行了更改,我们手动必须更改abc.aspx,如[script src =" abc.js v = 2"?]

使用几个aspx和javascript / css文件变得非常困难。

我在这里读到: force browsers to get latest js and css files in asp.net application

但建议的方法中几乎没有问题:

  1. 对于用户发出的每个请求,解决方案看起来都是版本js。这是不正确的。由于我们的网站是面向性能的网站,我们需要缓存它,除非它被改变。
  2. 如果它的全部@ Html.IncludeVersionedJs(" /MyJavascriptFile.js")只查找mvc。什么是Web表单版本才能执行此操作?
  3. 基本上我们希望避免手动对javascript引用进行版本控制,并构建足够智能的内容来检测我的解决方案中是否有任何javascript发生了变化,它会自动更新其相应的引用。

1 个答案:

答案 0 :(得分:0)

我猜您可以使用RegisterClientScriptInclude来实现这一目标。像下面的东西(我还没有测试过,所以你可能需要相应调整它)

var physicalPath = context.Server.MapPath(filename);
var version = "?v=" + new System.IO.FileInfo(physicalPath).LastWriteTime.ToString("yyyyMMddHHmmss");
Page.ClientScript.RegisterClientScriptInclude("script", filename + version);

您可以在检查PhysicalPath之前添加缓存层。