首页 > 代码库 > .NET MVC扩展UrlHelper支持CDN
.NET MVC扩展UrlHelper支持CDN
0x00、为什么要扩展
因为我的服务器是小水管,加载一个完整的网站往往需要很久,想加速网站加载速度,静态文件最好是分离出来,所有就想到了扩展UrlHelper,用来支持CDN加载文件。
0x01、论引用静态文件的几种方法
以 jquery-1.11.0.min.js
为例,一般常用的有以下两种(我自己的情况)
<script src="http://www.mamicode.com/~/Content/themes/plugins/jQuery/jquery-1.11.0.min.js"></script><script src="http://www.mamicode.com/@Url.Content("~/Content/themes/plugins/jQuery/jquery-1.11.0.min.js")"></script>
@Url.Content("")
形式是UrlHelper的方法,我们今天就来扩展它
0x02、扩展的代码
新建一个UrlHelperExtensions
类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Web; using System.Web.Mvc; namespace Chenmo.Soft.WebUI.Framework { public static class UrlHelperExtensions { /// <summary>CSS cdn /// /// </summary> /// <param name="helper"></param> /// <param name="contentPath"></param> /// <returns></returns> public static string CdnCssContent( this UrlHelper helper, string contentPath) { return GetContent(helper, contentPath, "CSS" ); } /// <summary>JS cdn /// /// </summary> /// <param name="helper"></param> /// <param name="contentPath"></param> /// <returns></returns> public static string CdnJsContent( this UrlHelper helper, string contentPath) { return GetContent(helper, contentPath, "JS" ); } /// <summary>img cdn /// /// </summary> /// <param name="helper"></param> /// <param name="contentPath"></param> /// <returns></returns> public static string CdnImgContent( this UrlHelper helper, string contentPath) { return GetContent(helper, contentPath, "IMG" ); } private static string GetContent( this UrlHelper helper, string contentPath, string type) { var result = helper.Content(contentPath); if (ConfigurationManager.AppSettings[$ "CDN_{type}_Enable" ].ToUpper() == "TRUE" ) { result = ConfigurationManager.AppSettings[$ "CDN_{type}_URL" ] + contentPath.TrimStart( ‘~‘ ); } return result; } } } |
同时在web.config 中的appSettings节点添加一下配置
1 2 3 4 5 6 7 8 9 | <!--是否开启CDN True False--> <add key= "CDN_CSS_Enable" value=http://www.mamicode.com/ "True" /> <add key= "CDN_CSS_URL" value=http://www.mamicode.com/ "http://css.static.ofnhkb1.com" /> <add key= "CDN_JS_Enable" value=http://www.mamicode.com/ "True" /> <add key= "CDN_JS_URL" value=http://www.mamicode.com/ "http://js.static.ofnhkb1.com" /> <add key= "CDN_IMG_Enable" value=http://www.mamicode.com/ "True" /> <add key= "CDN_IMG_URL" value=http://www.mamicode.com/ "http://img.static.ofnhkb1.com" /> |
0x03、扩展的使用
直接在页面上@Url.CdnCssContent("") or @Url.CdnJsContent("") or @Url.CdnImgContent("") 即可,如图是我的页面引用
0x04、效果
0x05、CDN/OSS设置
这里提一点,把回源地址设置为主站的地址,这样当cdn找不到文件的时候,会自动从主站拉取文件
建议把防盗链Referer给打开,并设置好
写得不好,请各位多多指教
.NET MVC扩展UrlHelper支持CDN
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。