Asp.net(C#) MVC4自带的JS、CSS优化功能

 功能复杂、界面漂亮的网站常常会遇到JS、CSS文件过大,导致网站访问速度变慢,本章正是针对此问题进行优化。

本章所说的JS、CSS优化功能:

一、缓存:首次访问站点,JS和CSS文件会下载到浏览器缓存中,之后的再次访问站点时,不再从服务器下载JS CSS文件,而是从浏览器缓存中读取;除非JS CSS文件有更新改动,则在访问时自动更新浏览器缓存中的JS CSS文件。

二、优化压缩:自动将JS CSS文件优化压缩,也就是去掉文件中的不必要的注释空格换行等等,然后才将优化压缩的文件传到客户端。

使用步骤:

此功能会用到MVC4 的System.Web.Optimization组件,

若是旧项目转换过来则需手工添加引用C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.Web.Optimization.1.0.0\lib\net40\System.Web.Optimization.dll

若是VS2010新建MVC4项目则会自动引用System.Web.Optimization.dll组件,并在/App_Start目录下生成一个BundleConfig.cs:


    public class BundleConfig
    {
        // 有关 Bundling 的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {
            //bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
            //            "~/Scripts/jquery-{version}.js"));
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-1.9.1.min.js"));

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

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.unobtrusive*",
                        "~/Scripts/jquery.validate*"));
            bundles.Add(new ScriptBundle("~/bundles/jscommon").Include(
                        "~/Scripts/JSCommon.js")); 

            // 使用 Modernizr 的开发版本进行开发和了解信息。然后,当你做好
            // 生产准备时,请使用 http://modernizr.com 上的生成工具来仅选择所需的测试。
            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));

            bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));

            bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
                        "~/Content/themes/base/jquery.ui.core.css",
                        "~/Content/themes/base/jquery.ui.resizable.css",
                        "~/Content/themes/base/jquery.ui.selectable.css",
                        "~/Content/themes/base/jquery.ui.accordion.css",
                        "~/Content/themes/base/jquery.ui.autocomplete.css",
                        "~/Content/themes/base/jquery.ui.button.css",
                        "~/Content/themes/base/jquery.ui.dialog.css",
                        "~/Content/themes/base/jquery.ui.slider.css",
                        "~/Content/themes/base/jquery.ui.tabs.css",
                        "~/Content/themes/base/jquery.ui.datepicker.css",
                        "~/Content/themes/base/jquery.ui.progressbar.css",
                        "~/Content/themes/base/jquery.ui.theme.css"));
        }
    }

上边这段代码作用是向Bundle对象集合中注册CSS JS文件,可以注册单个文件,也可以注册多个文件。


接着在视图页面或母板页中需要哪个文件则引用相对的虚拟路径:


<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta charset="utf-8" />
    <title>
        <asp:ContentPlaceHolder ID="TitleContent" runat="server" />
    </title>
    <link href="<%: Url.Content("~/favicon.ico") %>" rel="shortcut icon" type="image/x-icon" />
    <meta name="viewport" content="width=device-width" />
    <%: Styles.Render("~/Content/css") %>
    <%: Scripts.Render("~/bundles/jquery") %>
    <%: Scripts.Render("~/bundles/modernizr") %>
    <%: Scripts.Render("~/bundles/jscommon")%>
</head>

然后在Global.asax中加上一句代码开启优化功能:BundleTable.EnableOptimizations = true;


    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();
            BundleTable.EnableOptimizations = true;//是否启用优化 
        }
    }


运行项目,使用GOOGLE浏览器就能很方便的看到jquery、jscommon、css文件的网络下载Size从一开始的流量变成(from cache),status也会变成304Not Modified,当文件有更新时则自动更新浏览器缓存。



点击这些CSS JS文件就会发现已经被压缩优化。



更新(20140127):

         我错了,不是这样的。  此章课题有待深入研究,高手请飘过!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值