MVC4商城项目四:应用Bundle捆绑压缩技术

从MVC4开始,我们就发现,项目中对Global.asax进行了优化,将原来在MVC3中使用的代码移到了【App_Start】文件夹下,而Global.asax只负责初始化。其中的BundleConfig类就有个很牛X的功能:合并与压缩。想到以前做ASP.NET的时候要通过工具压缩,手动合并,很麻烦。通过BundleConfig可以大大的提高工作效率和项目性能。

一、基本的使用

1.1、Global.asax文件的初始化

  protected void Application_Start()
        {
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }

1.2、BundleConfig 绑定压缩文件

    public class BundleConfig
    {
        // 有关 Bundling 的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {

            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                "~/Content/Scripts/jquery-{version}.js"
               ));

            bundles.Add(new ScriptBundle("~/Content/Scripts/toojs").Include(
                      "~/Content/Scripts/jquery.cookie.js",
                     "~/Content/Scripts/footer.js"
                 ));

1.3、视图中的显示

@Styles.Render("~/Content/Css/Common")  //单个样式的绑定

@Scripts.Render("~/bundles/jquery","~/Content/Scripts/toojs","~/Content/Sctipts/bootstraptJs")  //多个JS的绑定

1.4、web.config 的配置

<system.web>
    <compilation debug="true" targetFramework="4.5"/>
debug="false"的时候就启用的压缩

二、效果说明 

当启用压缩之后,打开firebug你会看到

多个文件在一起会被合并,文件格式去掉了,形成的压缩,提高了文件的加载时间。

我觉得还有一个很智能的好处:支持正则匹配文件

*\{version}  两个是很好的匹配,在实际项目中,在样式迭代开发时,stlye.1.0.css,stlye.1.1.css,stlye.1.2.css,stlye.1.3.css……模式累加,路径只写 ~/Content/stlye.*.css 就可以了。

在JS开发的时候很多时候改了BUG,JS有版本更新:Script.1.0.js,Script.1.0.min.js,Script.1.1.js,Script.1.1.min.js  会使用到最新版本,用{version} debug模式下会取最新的文件,发布的时候会取最新的min

三、注意事项:

刚开始的时候虚拟路径的命名有就很奇怪: ~/bundles/jquery。如下:
 bundles.Add(new ScriptBundle("~/bundles/jquery").Include(    
 bundles.Add(new ScriptBundle("~/Content/Scripts/toojs").Include(
我开始以为:~/Content/Scripts 是文件的文件夹地址,后面随便命名,但~/bundles 又是什么?我们跟踪的时候发现:

在bundles 注册之前就有了值,原来系统已经定义好了7个路径标识,应该是默认常用的吧。这个地方坑了我好长时间了,百度也没人说~

好了,就这么多了,这节没有讲代码,就是说了下捆绑的新功能 。

 

MVC4商城项目四:应用Bundle捆绑压缩技术

时间: 2024-10-10 04:54:21

MVC4商城项目四:应用Bundle捆绑压缩技术的相关文章

Bundle捆绑压缩技术

Bundle捆绑压缩技术由命名空间System.Web.Optimization中的类提供.顾名思义,这些类是用来优化Web页面性能的,它们通过压缩文件大小,捆绑文件(把多个文件合成一个下载文件)来实现优化. 一.在空MVC项目中添加Bundle捆绑 1.新建一个空MVC项目,命名为MVCBundleDemo 2.使用NuGet下载jquery和jquery validation以及bootstrap 3.通过NuGet下载Microsoft.AspNet.Web.Optimization 修改

MVC4商城项目二:用户身份验证的实现

用户身份验证,依赖于 forms 身份验证类:FormsAuthentication,它是一串加密的cookie 来实现对控制器访问限制和登陆页面的访问控制.它在浏览器端是这样子的: 需求:我们要实现对用户中心只有登录的用户才能访问,如果没登录就跳转到登录页面,其它页面都可以访问: 首先来看登录控制器的代码: UserDto user = UserService.GetUserById(Convert.ToInt32(msg.Msg)); //为提供的用户名提供一个身份验证的票据 FormsAu

MVC4商城项目三:分部视图在导航条上的应用

写了几天发觉大部分时间用在JS上了,本来想写个musicstore,却加了框架,然后又想用后台,然后又想用上bootstrapt,然后又想弄权限设计,然后又想………… 看来是想多了~ 好吧,最近把后台搭起来了,用了metronic.bootstrap, 真心很强大.功能很多,为了节约时间成本就在它上面改吧.先上图看看 框架演示地址:http://dreamsky.github.io/main/blog/metronic-bootstrap/index.html 下载地址:http://dream

【SSH网上商城项目实战29】使用JsChart技术在后台显示商品销售报表

这个项目终于接近尾声了,注册功能我就不做了,关于注册功能我的另一篇博客详细的介绍了一下注册的表单验证,可以直接把功能加到本项目中,修改一下相关的跳转即可,就不再做了.另外,目前这个项目只有action层和service层,dao层我还没抽取,做完这个报表,我把dao层抽取一下,再对整个项目做个总结,差不多就可以上传源码了,到时候欢迎大家下载~ 这一节主要做一下最后一个功能:使用JsChart这个工具来显示商品的销售报表,JsChart是很好用的一款制作报表的工具,之所以好用,是因为它的官方实例做

【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价

昨天把项目部署了一下,玩了玩,今天完善了一下购物车中修改商品数量就能局部更新相应的总价的功能,大家都知道这得用Ajax实现,我之前也没学Ajax,刚好借助这个小功能,去简单学习一下Ajax的知识. 1.问题的分析 先看一下页面中的情况:  功能如上,在没有Ajax之前,一般都是根据用户修改的值去找Action,然后返回新的jsp页面重新加载整个页面,完成数字的更新.但是有了Ajax技术后,我们可以利用Ajax技术局部刷新要改变的地方,而不是重新加载整个页面.首先看一下上图对应的jsp部分的代码:

1、新建MVC项目,添加easyui,并启用捆绑压缩

一.新建MVC项目,选择mvc4,选择.NET Framework4框架.考虑对server 2003的支持,选择.NET Framework4框架. 二.选择项目模板:选"空",视图引擎:选"Razor". 三.添加easy ui 1.右键选择"管理NuGet程序包" 2.在联机中搜索easyui ,此处为1.4.5版本,点击安装.安装完成后项目中自动新增"Content"和"script"两个文件夹.

estore商城案例(四、五)------添加购物车&amp;购物车显示/生成订单&amp;在线支付

一.添加购物车 1.获得商品id提交到servlet程序 2.根据id获取product对象 3.判断seesion中是否有存在购物车session.没有的话表示  添加的第一件商品  需要先创建session:有的话直接在session里添加获得的produce(添加product 要先判断session中是否存在对应的商品,存在话直接修改商品数量,没有的话新添加这个商品). servlet程序代码: 1 public void doGet(HttpServletRequest request

android 实践项目四

android 实践项目四 本周主要是开发android baidumap实现公交的查询 1.权限的取得和对屏幕的支持 1 <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" > 2 </uses-permission> 3 <uses-permission android:name="android.permission.ACCESS_NETWORK

【SSH网上商城项目实战16】Hibernate的二级缓存处理首页的热门显示

网上商城首页都有热门商品,那么这些商品的点击率是很高的,当用户点击某个热门商品后需要进入商品的详细信息页面,就像淘宝里面那样.那么每次点击都要去后台查询一下该商品的详细信息,就会发送相应的sql语句,每次刷新一下详细页面也会发sql语句,这样的话,性能肯定会受到很大的影响.那么使用Hibernate的二级缓存就可以解决这个问题. 有些人可能会想,我们可以使用重定向,这样的话,在用户第一次访问的时候把信息查出来放到session中,以后每次用户刷新就可以去session中拿了,这样就不用去数据库中