【问题标题】:Versioning CSS and Javascript files automatically in Umbraco 7在 Umbraco 7 中自动对 CSS 和 Javascript 文件进行版本控制
【发布时间】:2014-04-09 11:03:06
【问题描述】:

我是 .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 新手,我不知道这是否是标准约定。

任何帮助将不胜感激。

【问题讨论】:

    标签: c# razor umbraco versioning umbraco7


    【解决方案1】:

    开箱即用不支持此功能。除非您使用“客户端依赖”框架。这是一种“bundels”框架,类似于 Asp.net 框架。

    您所做的一切都是完全可能的。 Umbraco 仍然是 .Net。

    在您的网站中获取此代码的两种方法:

    • 创建一个新项目,构建一个 DLL 并将该 DLL 放到您的 umbraco 网站中
    • 将您的代码放入 App_code 并让 IIS 构建它。

    注意:您正在检查每个请求的修改日期。如果您有一个繁忙的网站,您将需要对其进行优化。例如。使用 @Html.CachedPartial(...) 或使用宏使用部分

    【讨论】:

      猜你喜欢
      • 2018-07-03
      • 2018-06-16
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 2010-12-30
      • 1970-01-01
      相关资源
      最近更新 更多