在Umbraco 7中自动控制CSS和Javascript文件的版本
本文关键字:Javascript 文件 版本 CSS Umbraco 自动控制 | 更新日期: 2023-09-27 17:57:38
我对.NET开发和Umbraco都是新手,因为我最近开始了一个新的角色,我将与这两个部门密切合作。像往常一样,在开始开发之前,我正在寻找一些快捷方式或辅助功能,使我能够更有效地工作。我发现我包含了以下一组辅助功能:
public static string DatedContent(this UrlHelper urlHelper, string contentPath)
{
var datedPath = new StringBuilder(contentPath);
datedPath.AppendFormat("{0}m={1}",
contentPath.IndexOf('?') >= 0 ? '&' : '?',
getModifiedDate(contentPath));
return urlHelper.Content(datedPath.ToString());
}
private static string getModifiedDate(string contentPath)
{
return System.IO.File.GetLastWriteTime(HostingEnvironment.MapPath(contentPath)).ToString("yyyyMMddhhmmss");
}
上面的函数调用如下:
<script src="@Url.DatedContent("~/scripts/product.js")"></script>
这些函数的目的是自动对Javascript和CSS文件进行版本设置,以确保通过在文件引用的末尾附加一个修改后的日期查询字符串来获取每个Javascript和CSS文件的最新版本。
我的问题是,我很抱歉这是一个新手问题,但我应该把这个功能放在Umbraco 7的哪里,或者这个功能已经得到支持了吗?
据我所知,内容页面都有一些基本属性,包括创建日期和修改日期,但CSS和脚本文件没有这些属性,所以我不能像执行上面的函数一样,简单地使用内联Razor代码引用这些对象属性,并用ToString方法压缩它们。
我的第一个想法是,这些函数可以包含在模板的顶部,其中会自动包含剃刀代码块,但由于我是.Net的新手,我不知道这是否是一个标准约定。
如有任何帮助,我们将不胜感激。
这不是开箱即用的支持。除非您使用"客户关系"框架。这是一种"bundels"框架,类似于Asp.net框架。
你所做的完全有可能。Umbraco仍然是.Net。
在您的网站上获得此代码的2种方法:
- 制作一个新项目,构建一个DLL,并将该DLL放在umbraco网站中
- 把你的代码放在App_code中,让IIS构建它
注意:您正在检查每个请求的修改日期。如果你有一个繁忙的网站,你会想优化这个。例如,使用@Html.CachedPartial(…)或使用宏使用分部