Question

Je me demande s'il y a un moyen facile de spécifier un CDN pour tout le contenu que je référence à travers Url.Content dans mes vues.

Quelque chose que je pourrais configurer dans mon fichier web.config d'une manière similaire à ce qui suit.

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

Alors, je pouvais avoir <% = Url.Content ( "~ / Contenu / StyleSheets / What.css")%> et génèrerait http://mycdn.mydomain.com/stylesheets/Content/StyleSheets/What.css .

Si rien n'est disponible, je vais le faire moi-même via des méthodes d'extension, mais je me demandais s'il était possible de la boîte.

Était-ce utile?

La solution

La réponse ci-dessus est probablement correcte, voici comment il pourrait regarder dans la pratique:

// @ 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" />

Je pense que fonctionne .. Vous pouvez également utiliser plusieurs méthodes d'extension pour séparer les sortes de contenu pour servir localement et ceux du CDN .. Il n'y a pas d'exigence que la configuration est web.config bien, juste utile pour le développement et gestion.

Autres conseils

Je ne crois pas qu'il y ait rien construit pour faciliter cela pour vous. Cela dit, est d'ajouter ceci à Web.config vraiment nécessaire?

Je suppose que si vous ne voulez pas inclure vos articles distribués CDN sur chaque page dans votre application, je pouvais comprendre extrapolant les URL vers un emplacement central quelque part, mais même alors, il semble que vous pouvez simplement écrire quelques méthodes d'extension qui renvoient une chaîne constante au lieu de vous embêter avec le web.config. Je connais des gens grincer des dents à cela parce que vous devez recompiler pour changer l'URL, mais comment ils sont souvent qui va changer?

Dans le cas, cependant, que vous ne voulez inclure ces éléments distribués CDN sur chaque page, ce qui est mal à jeter les URL dans votre page maître? Dans la plupart des cas, la modification de votre page maître est tout aussi simple que de changer une valeur web.config.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top