MVC項目開發中那些用到的知識點(js css優化-- 合並和壓縮)


在項目框架中,首先要引用很多css和js文件,80%的用戶響應時間都是浪費在前端。而這些時間主要又是因為下載圖片、樣式表、JavaScript腳本、flash等文件造成的。減少這些資源文件的Request請求數將是提高網頁顯示效率的重點。
這里好像有個矛盾,就是如果我減少了很多的圖片,樣式,腳本或者flash,那么網頁豈不是光禿禿的,那多難看呢?其實這是一個誤解。我們只是說盡量的減少,並沒有說完全不能使用。減少這些文件的Request請求數,我們這里主要針對js和css文件進行優化,使用Combres工具

第一步准備工具Nuget可以百度,也可以在此http://nuget.org/

第二步通過VS2010管理NuGet程序包來查找第二個工具,也就是本次要使用的工具Combres的工具。

點擊安裝后,會在項目中生成一系列的文件和引用。

在App_Data/combres.xml,這個就是設置壓縮/合並的文件配置。

第三步進行對配置文件進行處理,當然主要是對css文件和Js文件進行相關配置,修改combres.xml如下。

<?xml version="1.0" encoding="utf-8" ?>
<!--
  This file contains basic settings needed for most web apps.
  For full Combres settings (with explanation), refer to the sample definition file: combres_full_with_annotation.xml
  Also, refer to Combres' documentation: http://combres.codeplex.com/documentation	
-->
<combres xmlns='urn:combres'>
  <filters>
    <filter type="Combres.Filters.FixUrlsInCssFilter, Combres" />
  </filters>
  <cssMinifiers>
    <minifier name="yui" type="Combres.Minifiers.YuiCssMinifier, Combres">
      <param name="CssCompressionType" type="string" value="StockYuiCompressor" />
      <param name="ColumnWidth" type="int" value="-1" />
    </minifier>
  </cssMinifiers>
  <jsMinifiers>
    <minifier name="msajax" type="Combres.Minifiers.MSAjaxJSMinifier, Combres"
    binderType="Combres.Binders.SimpleObjectBinder, Combres">
      <param name="CollapseToLiteral" type="bool" value="true" />
      <param name="EvalsAreSafe" type="bool" value="true" />
      <param name="MacSafariQuirks" type="bool" value="true" />
      <param name="CatchAsLocal" type="bool" value="true" />
      <param name="LocalRenaming" type="string" value="CrunchAll" />
      <param name="OutputMode" type="string" value="SingleLine" />
      <param name="RemoveUnneededCode" type="bool" value="true" />
      <param name="StripDebugStatements" type="bool" value="true" />
    </minifier>
  </jsMinifiers>
  <!--defaultDuration 默認緩存的時間,單位為天數-->
  <!--defaultVersion 合並后的資源版本,在你修改了資源文件后需要對版本進行修改,你可以指定auto或者手動設置一個版本號-->
  <!--defaultDebugEnabled 調試的模式,為true時那么資源文件不進行壓縮,開發時可以設置成true,上線后設置成false-->
  <resourceSets url="~/combres.axd"
                defaultDuration="30"
                defaultVersion="auto"
                defaultDebugEnabled="false"
                defaultIgnorePipelineWhenDebug="true"
                localChangeMonitorInterval="30"
                remoteChangeMonitorInterval="60"
                >
    <resourceSet name="siteCss" type="css" minifierRef="yui">
      <resource path="~/Content/Site.css" />
      <resource path="~/Content/StyleSheet1.css" />
    </resourceSet>
    <resourceSet name="siteJs" type="js">
      <resource path="~/Scripts/jquery-1.5.1.min.js" minifierRef="msajax"  />
      <resource path="~/Scripts/test.js"  minifierRef="off"  />
    </resourceSet>
  </resourceSets>
</combres>

 

 

 這是我修改之后的文件配置。主要是resourceSet節點下的配置。

<!--defaultDuration 默認緩存的時間,單位為天數-->

<!--defaultVersion 合並后的資源版本,在你修改了資源文件后需要對版本進行修改,你可以指定auto或者手動設置一個版本號-->

<!--defaultDebugEnabled 調試的模式,為true時那么資源文件不進行壓縮,開發時可以設置成true,上線后設置成false-->

第四步 刪除 AppStart/Combres.cs,移除WebActivetor的引用。打開 global.asax 添加 using Combres;的引用。在 RegisterRoutes 第一行添加routes.AddCombresRoute("Combres")


第五步 在需要的視圖文件進行引用,先來看一下未做修改前的文件內容

<!DOCTYPE html>
<html>
<head>
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/StyleSheet1.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/test.js")" type="text/javascript"></script>
</head>
 
        

 接下來是修改之后的

@using Combres.Mvc;
<!DOCTYPE html>
<html>
<head>
    <title>@ViewBag.Title</title>
    @Html.CombresLink("siteCss")
    @Html.CombresLink("siteJs")
</head>

 siteCss和sitJs已經在上面App_Data/combres.xml進行過配置。

最后一步運行查看,這是未修改之前的

接下來看修改之后的

效果很明顯,原來的四次請求,變成了兩次請求。

 
        

 

示例代碼下載

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM