Как сохранить ссылки на изображения CDN на сайтах разработчиков и производства? - PullRequest
3 голосов
/ 28 августа 2010

У меня есть это приложение ASP.NET MVC, которое я сейчас хочу отделить от ссылок на изображения в CDN. На данный момент изображения обычно имеют такой код разметки:

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

Это прекрасно работает при разработке с использованием локального веб-сервера (Cassini), а также при публикации сервера prod.
Но теперь я хочу, чтобы производственный URL был примерно таким:

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

Как мне заставить это работать легко, чтобы оно работало без проблем в dev и после публикации в prod?

Ответы [ 2 ]

3 голосов
/ 28 августа 2010

Вы можете создать метод расширения 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, иначе он его не распознает.

0 голосов
/ 29 августа 2010

Вы также можете изменить свой хост-файл, чтобы перенаправить домен cdn на другой IP-адрес. Я использую это для перенаправления static.myresources.com на localhost, и он сохраняет ваш HTML довольно чистым.

...