gpt4 book ai didi

c# - 在C#.NET中,如何给HTML、CSS等静态文件引用添加版本号?

转载 作者:太空狗 更新时间:2023-10-29 14:51:59 27 4
gpt4 key购买 nike

因此,我正在使用 C#.NET 构建一个 Web 应用程序,并希望将版本号添加到文件引用中。例如:

<script src="mysite/scripts/default.123.js"></script>

每次我修改网络应用程序中的文件,包括 cshtml、CSS、JS 或图像时,版本号是否可以动态递增? 换句话说,我如何首先获得[或创建]版本号?可能吗?

这是为了避免在客户端浏览器上缓存旧副本,尤其是在通过 XHR 提供服务时。由于我不想花时间解释的原因,我不要求替代方法,例如虚拟参数、无缓存元标记、日期时间戳、CDN 等。

我希望这个数字对应于被修改的文件的最新版本——也许“构建版本”不是正确的词。作为 Kyle Trauberman,assemblyversion 可能会起作用。然而,这会适应对静态资源(例如 HTML 或 CSS)的更改吗?有什么好的方法吗?

最佳答案

为了解决这个问题,我采用了一种稍微不同的方法。我没有使用“版本号”,而是简单地附加上次修改日期。为了方便起见,我写了一个辅助方法:

public static HtmlString Script<T>(this HtmlHelper<T> html, string path)
{
var file = html.ViewContext.HttpContext.Server.MapPath(path);
DateTime lastModified = File.GetLastWriteTime(file);

TagBuilder builder = new TagBuilder("script");
builder.Attributes["src"] = path + "?modified=" + lastModified.ToString("yyyyMMddhhmmss");
return new HtmlString(builder.ToString());
}

然后在您的 View 中(不确定您是否使用 MVC,但两种情况下的解决方案都相似),您可以使用:

@Html.Script("/Scripts/common.js")

输出:

<script src="/Scripts/common.js?modified=20120129025804"></script>

注意: Page Speed 对查询字符串的使用不满意。但是,我尝试将其更改为使用“/”,这导致 MVC 接管文件的路由,并阻止 IIS 处理它。不确定如何解决。

关于c# - 在C#.NET中,如何给HTML、CSS等静态文件引用添加版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9219127/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com