我有一个使用大量 javascript 的 .NET Web 应用程序。.aspx 和 .js 文件齐头并进。问题:.aspx 文件在客户端上始终是最新的(未缓存),但 .js 文件可能会被缓存。如果文件只缓存一个会话,这甚至是一个问题,因为用户在我的网站上花费了很多时间,而且每次我更新 .aspx/.js 对时,用户都会遇到问题。
现在,我找到了一个解决方案,但我不确定是否有更好的解决方案,或者我的解决方案是否存在性能缺陷。
这是我的解决方案:
.aspx 中的 .js 引用:
<script type='text/javascript' src='../scripts/<%# GetScriptLastModified("MyScript.js") %>'></script>
因此,“GetScriptLastModified”将附加一个 ?v= 参数,如下所示:
protected string GetScriptLastModified(string FileName)
{
string File4Info = System.Threading.Thread.GetDomain().BaseDirectory + @"scripts\" + FileName;
System.IO.FileInfo fileInfo = new System.IO.FileInfo(File4Info);
return FileName + "?v=" + fileInfo.LastWriteTime.GetHashCode().ToString();
}
因此,呈现的 .js-Link 在客户端看起来像这样:
<script type='text/javascript' src='/scripts/GamesCharts.js?v=1377815076'></script>
每次上传新版本时,链接都会更改,我可以确保用户在更改时立即获得新的脚本或图像。