簡體   English   中英

asp.net MVC Url.Content()CDN重定向

[英]asp.net MVC Url.Content() CDN redirection

我想知道是否有一種簡單的方法可以為我在視圖中通過Url.Content引用的所有內容指定CDN。

我可以在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

如果沒有可用的東西,我會通過擴展方法自己做,但我想知道它是否可以開箱即用。

上面的答案可能是正確的,這是它在實踐中的樣子:

// @ 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中沒有要求,但這對開發和管理非常有用。

我不相信內置任何東西可以為您提供便利。 那就是說,將這個添加到Web.config真的有必要嗎?

我想如果你不想在你的應用程序的每個頁面上包含你的CDN分布式項目,我可以理解將URL外推到某個地方的中心位置,但即便如此,你似乎只能寫一些返回方法的擴展方法常量字符串而不是搞亂Web.config。 我知道有些人對此感到畏縮,因為你必須重新編譯以更改URL,但是他們多久會改變一次?

但是,如果您確實希望在每個頁面上包含這些CDN分發的項目,那么在主頁面中丟棄URL有什么問題? 在大多數情況下,更改母版頁就像更改web.config值一樣簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM