asp.net MVC Url.Content () Перенаправление CDN - PullRequest
5 голосов
/ 05 января 2010

Мне интересно, есть ли простой способ указать CDN для всего контента, на который я ссылаюсь через Url.Content в моих представлениях.

Что-то, что я мог бы настроить в своем файле Web.config следующим образом.

<cdn> <add filetype="css" root="http://mycdn.mydomain.com/stylesheets/" /> <add filetype="js" root="http://myjscdn.mydomain.com/js/ /> </cdn>

Тогда я мог бы просто иметь <% = Url.Content ("~ / Content / StyleSheets / What.css")%> и он вывел бы http://mycdn.mydomain.com/stylesheets/Content/StyleSheets/What.css.

Если ничего не доступно, я просто сделаю это сам с помощью методов расширения, но мне было интересно, возможно ли это из коробки.

Ответы [ 2 ]

10 голосов
/ 06 мая 2011

Ответ выше, вероятно, правильный, вот как это может выглядеть на практике:

// @ UrlHelperExtensions.cs

public static class UrlHelperExtensions 
{ 
    public static string CdnContent(this UrlHelper helper, string contentPath)
    {
        return (ConfigurationManager.AppSettings["CDN_Available"] == "True")
              ? ConfigurationManager.AppSettings["CDN_ContentRootUrl"] 
                   + contentPath.TrimStart('~')
              : helper.Content(contentPath);
}

// @ Web.config 

<appSettings>
    // ...
    <add key="CDN_Available" value="True" />
    <add key="CDN_SiteImageRoot" value="http://cdn.gbase.com/images/" />
    // ...
</appSettings>

// @ MyPage.cs

<link href="@Url.CdnContent("~/client/css/mymin.css")" rel="stylesheet" type="text/css" media="all" />

Я думаю, что это работает. Вы также можете использовать несколько методов расширения для разделения видов контента для локального ите, что в CDN. Нет необходимости, чтобы конфигурация была в web.config, просто полезна для разработки и управления.

0 голосов
/ 05 января 2010

Я не верю, что есть что-то встроенное, чтобы облегчить это для вас. Тем не менее, действительно ли необходимо добавить это в Web.config?

Полагаю, если вы не хотите включать элементы, распространяемые в CDN, на каждую страницу вашего приложения, я мог бы понять экстраполяцию URL-адресов в какое-то центральное место, но даже тогда кажется, что вы могли бы просто написать несколько методов расширения которые возвращают постоянную строку вместо того, чтобы связываться с Web.config. Я знаю, что некоторые люди недовольны этим, потому что вам нужно перекомпилировать, чтобы изменить URL, но как часто они будут меняться?

Однако, если вы хотите включить эти элементы, распространяемые CDN, на каждую страницу, что не так с добавлением URL-адресов на главную страницу? В большинстве случаев изменить главную страницу так же просто, как изменить значение web.config.

...