[英]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.