代码之家  ›  专栏  ›  技术社区  ›  Magnus Johansson

如何在开发和生产站点中维护cdn图像链接?

  •  3
  • Magnus Johansson  · 技术社区  · 14 年前

    我有一个ASP.NET MVC应用程序,我现在想将到cdn的图像链接分离出来。 此时,图像通常具有以下标记代码:

    <%= Html.ActionLinkWithImage("/Content/Img/Image1.png" ...
    

    这在使用本地Web服务器(cassini)开发和发布prod服务器时都可以很好地工作。
    但是现在我想让生产URL指向如下内容:

    http://cdn.com/Img/Image1.png
    

    如何让它以一种简单的方式工作,以便它在开发人员和发布到prod之后无缝地工作?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Omar    14 年前

    您可以创建一个URL扩展方法,该方法将根据web.config文件(或其他文件)中的值生成调试URL或活动URL。

    public static MvcHtmlString CDNImageLink(this UrlHelper url, string imageName)
    {
        string urlFormat;
        if((bool)ConfigurationManager.AppSettings["Debug"])
            urlFormat = "/Content/Img/{0}";
        else
            urlFormat = "http://cdn.com/Img/{0}";
    
        return MvcHtmlString.Create(string.Format(urlFormat, imageName));
    }
    

    然后,您可以在需要图像URL的任何位置使用此扩展方法(包括HTML扩展方法):

    public static MvcHtmlString ActionLinkWithImage(this HtmlHelper html, string imageName)
    {
         UrlHelper Url = new UrlHelper(html.ViewContext.RequestContext);
         string imageUrl = Url.CDNImageLink(imageName);
         // generate the rest of the ActionLink using the imageUrl
    }
    

    确保你有 using 用于URL扩展方法位于声明HTML扩展方法的文件顶部的命名空间的语句,否则它将无法识别该方法。

        2
  •  0
  •   John Farrell    14 年前

    您还可以修改主机文件,将您的cdn域重定向到另一个IP地址。我使用它将static.myresources.com一直重定向到localhost,这样可以保持HTML的整洁。