本文来源于博客园,转载请注明出处

通过这篇文章这个回答,我们总结如下:

  • 浏览器针对一个域名,最多只会开启6个线程来加载文件,比如head中如果有7个引入文件(js文件或者css文件)的标签,则最后一个文件的网络请求只能排队,直到前6个加载完毕
  • 显然,通过CDN的方式,我们可以避开这个限制,因为CDN的域名跟我们站点的域名是不一样的(当然,除非你自建CDN)
  • 使用bundling和minification的好处1:将多个js或css文件合并成一个,减少网络加载
  • 使用bundling和minification的好处2:可以通过通配符的方式让一些js库(比如jquery这种频繁更新的库)配置更灵活,以方便将来的升级,避免了一处更改,处处更改
  • 配合使用Section、RenderSection和Styles.Render、Scripts.Render,我们可以在layout中将通用的资源文件用Styles.Render、Scripts.Render引入,而特定页面才有的使用RenderSection按需引入,在实际使用中可以不用Section,

    在layout布局页面中引入全局的js和css,在碎片页面中引入自己的js和css就行了,无非是页面没那么规则,js和css的引入会出现在div中,而不是在head中
  • 注意一点:bundles.Add时的虚拟路径写法,对css来说,必须以"/Content"开始,后面的bootstrapMarkdownCss可以自己随意命名,对js来说,则必须以"/bundles"开始,这只是区分了两种不同的资源类型,跟路径什么的没有一点关系没有,而且js和css资源的名称可以一样:
 //blog 添加和编辑页面的js
bundles.Add(new ScriptBundle("~/bundles/mdEdit").Include(
"~/Content/bootstrap-markdown/js/bootstrap-markdown.js",
"~/Content/bootstrap-markdown/locale/bootstrap-markdown.zh.js",
"~/Scripts/showdown.min.js",
"~/bundles/showdownjs",
"~/Content/highlight/highlight.pack.js",
"~/Scripts/my.js")); //blog 添加和编辑页面的css
bundles.Add(new StyleBundle("~/Content/mdEdit").Include(
"~/Content/bootstrap-markdown/css/bootstrap-markdown.min.css",
"~/Content/highlight/styles/agate.css"));

bootstrapMarkdownCss是自己定义的名字,但它前边必须是一个有效的目录,js的虚拟路径

  • 我们还可以结合CDN的方式来使用,而不是使用本地文件
public static void RegisterBundles(BundleCollection bundles)
{
//bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
// "~/Scripts/jquery-{version}.js")); bundles.UseCdn = true; //enable CDN support //add link to jquery on the CDN
var jqueryCdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"; bundles.Add(new ScriptBundle("~/bundles/jquery",
jqueryCdnPath).Include(
"~/Scripts/jquery-{version}.js")); // Code removed for clarity.
}

为了让程序更加健壮,我们还要考虑CDN请求失败的情况,这可以在客户端处理

</footer>

        @Scripts.Render("~/bundles/jquery")

        <script type="text/javascript">
if (typeof jQuery == 'undefined') {
var e = document.createElement('script');
e.src = '@Url.Content("~/Scripts/jquery-1.7.1.js")';
e.type = 'text/javascript';
document.getElementsByTagName("head")[0].appendChild(e); }
</script> @RenderSection("scripts", required: false)
</body>
</html>

本文来源于博客园,转载请注明出处

关于ASP.NET MVC的js和css资源管理的更多相关文章

  1. Asp.Net MVC 合并js或css请求

    Step1:BundleConfig中注册 bundles.Add(new ScriptBundle("~/isValid").Include(  "~/Scripts/ ...

  2. 【MVC】 js,css 压缩

    [MVC] js,css 压缩 一. 引用 System.Web.Optimization.dll : 使用 Nuget ,在控制台输入 Install-Package Microsoft.AspNe ...

  3. [Asp.net Mvc]为js,css静态文件添加版本号

    方式一: 思路 string version = ViewBag.Version; @Scripts.RenderFormat("<script type=\"text/ja ...

  4. ASP.NET MVC+Vue.js实现联系人管理

    接触了一天vue.js,简单浏览了一本关于vue的电子书,就开始动手使用ASP.NET MVC和Vue.js开发一个联系人管理的小程序. 先看一下这个联系人管理的小程序的界面,也就是我们大概要实现什么 ...

  5. [转]HTML5 Day 4: Add Drop Down Menu to ASP.NET MVC HTML5 Template using CSS and jQuery

    本文转自:http://pietschsoft.com/post/2010/11/17/HTML5-Day-4-Add-DropDown-Menu-ASPNET-MVC-HTML5-Template- ...

  6. 期货大赛项目|十,MVC对js和css的压缩

    在Global.asax中添加两行代码 //默认在调试期间,不会启用js和css的压缩 //下面的语句确保了在调试期间也压缩css和js BundleTable.EnableOptimizations ...

  7. Asp.net 程序优化js,css合并与压缩

    访问时将js和css压缩并且缓存在客户端,采用的是Yahoo.Yui.Compressor组件还完成的,从这里可下载 创建一个IHttpHandler来处理文件 ) }; )              ...

  8. 本地Debug Asp.net MVC 无法加载css与js

    运行一个从网上download的一个MVC项目,运行的时候无法显示样式,js也报错. 检查路径也没有问题,后来在配置中把其中的一段配置去掉 <staticContent> <!-- ...

  9. Asp.Net MVC 中JS通过ajaxfileupload上传图片获取身份证姓名、生日、家庭住址等详细信息

    客户要求用身份证图片上传获取身份证的详细信息就下来研究了一下(现在的客户真的懒 身份证信息都懒得输入了哈哈...),经过慢慢研究,果然皇天不负有心人搞出来了.这个借助的是腾讯的一个SKD  腾讯优图云 ...

随机推荐

  1. Python基于Flask框架配置依赖包信息的项目迁移部署小技巧

    一般在本机上完成基于Flask框架的代码编写后,如果有接口或者数据操作方面需求需要把代码部署到指定服务器上. 一般情况下,使用Flask框架开发者大多数都是选择Python虚拟环境来运行项目,不同的虚 ...

  2. 第2章 PCI总线的桥与配置

    在PCI体系结构中,含有两类桥片,一个是HOST主桥,另一个是PCI桥.在每一个PCI设备中(包括PCI桥)都含有一个配置空间.这个配置空间由HOST主桥管理,而PCI桥可以转发来自HOST主桥的配置 ...

  3. 关闭PHPStorm 2017.1 中的新功能中的参数提示( Parameter hints )

    参数提示( Parameter hints ) 参数提示是显示在方法的参数值前面的文字,帮助你更好的理解语义的具体方法.我们还增加了一个选项来定制你的内联参数提示,以符合你的IDE配色方案. 配置面板 ...

  4. javascript 获取滚动条距离顶部的位置(兼容所有的)。

    function getScrollTop() { var scrollPos; if (window.pageYOffset) { scrollPos = window.pageYOffset; } ...

  5. 查看dmp文件

    1.查看dmp文件,首先要通过以下的链接地址进行下载 http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.11.1.404.m ...

  6. stl string 容器的使用

    string 是基本的字符串序列容器,对应数据结构中的串,和vector<char>也类似,但功能更多 string 容器的使用 1,string 的构造函数是. string() 2,s ...

  7. freemarker报错之九

    1.错误描述 五月 30, 2014 11:52:04 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...

  8. javaWeb之自动发送邮件生日祝福(ServletContextListener监听)

    在看完本随笔仍然不理解的可以看  javaWeb邮箱发送  :里面有具体的邮箱服务器配置 企业在员工生日当天发送邮箱生日祝福: 一般是用监听器完成:  而合适的监听是ServletContextLis ...

  9. freemarker之数组(十八)

    1.设计思路 (1)声明一个数组 (2)打印数组中的元素 2.设计源码 <#--freemarker数组--> <#assign nums=[12,34,56,78,90,54,23 ...

  10. 【BZOJ4407】于神之怒加强版(莫比乌斯反演)

    [BZOJ4407]于神之怒加强版(莫比乌斯反演) 题面 BZOJ 求: \[\sum_{i=1}^n\sum_{j=1}^mgcd(i,j)^k\] 题解 根据惯用套路 把公约数提出来 \[\sum ...