我有一个 ASP.NET 网页,我想确保用户在每次加载页面时都能获得最新版本的 javascript 文件,但我不希望他们下载该文件,除非它实际上已更改。它是一个不断发展的网络应用程序,js 文件经常被修改。我在手动更新的 url 中有一个版本号。但是当我更改js文件时,我总是忘记更新它。
<script type="text/javascript" src="js/Sched.js?v=1"></script>
所以在搜索自动版本控制方法时,我发现了一种使用 re-writes 和 php 的方法,这让我想到了我的环境。我想出的唯一方法是使用 js 文件的 LastWriteTime 作为版本。所以我建立了一个函数:
protected string GetFileTime(string file)
{
FileInfo fi = new FileInfo(Server.MapPath(file));
if (fi.Exists)
{
Debug.WriteLine(fi.FullName);
return fi.LastWriteTimeUtc.ToFileTime().ToString();
}
else
{
Debug.WriteLine("0");
return "0";
}
}
并在页面中更改了我的脚本网址:
<script type="text/javascript" src="js/Sched.js?dev=<%= GetFileTime("js/Sched.js") %>"></script>
它似乎在我的开发服务器上运行良好。浏览器看到这个:
<script type="text/javascript" src="js/Sched.js?dev=131969009464369343"></script>
我已经通过许多页面加载对其进行了测试,并且数量保持不变,直到我对文件进行更改。
所以这似乎是一个很好的解决方案。我查看了 FileInfo,它从磁盘读取文件元数据并且不打开或锁定文件。但是当我将它放在大约 1000 个用户的生产服务器上时,是否存在性能或其他问题的可能性?