<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      samesite


      【網站性能指南】(四)前端性能-壓爆你的文件

      【概述】

        在這一章,我們會聚焦在前端性能:

      • 外部的Css 和 Javascript
      • Css 和 Javascript 的 迷你化 與 合并
      • 圖片的最佳化
      • Css 圖片拼合器

       

      【外部的CSS和Javascript】

        幾乎所有的CSS和Javascript 都應該放在外部文件

      • 減少頁面的尺寸
      • 允許重用
      • 允許使其過期 
      • 可讀性更高 

       把css 和 js 文件放到外部文件的確可以讓頁面看的更加清爽,同時減小了頁面本身的尺寸。

       在外部的文件可重用性更高,例如你可以在一個css文件中定義整體布局。并且讓每個頁面的元素都遵從它。

       在上一節中,我們提到了瀏覽器過期的重要性,所以在外部引用css和js文件也是非常重要的。

       最后是可讀性,有超過50%的人遇到過混亂的頁面。里邊夾雜著html、js、css 甚至還有c#code。這樣的代碼的可讀性和維護性都差到極點了。

      【Css和Javascript的迷你化與合并】

        Css 和 javascript 的迷你化與合并是一種減少 httprequest 和傳輸數據量 的行之有效的方式。

      •   迷你化 
        • 移除白空格、注釋和多余的分號等
        • 同樣可以看到這樣的文件名中包含".min" (如果你經常使用jquery的插件,你會看到很多min文件)
        • 我們看一下jquery官網,開發版本大小是247KB,min版只有32KB。整整壓縮了88%。

      • 迷你化的工具合并
          • JSMin
          • Packer
          • YUI Compressor
          • CSS Min
          • Microsoft Ajax Minifier (特別推薦
        http://ajaxmin.codeplex.com/
           )
          • javascript 和 css
          • 命令行、dll和build 任務 
        • 合并文件以減少httprequest次數
        • msbuild
      • 策略實踐
        • 使用外部文件
        • 迷你化css和js文件
        • 把所有js文件合并成一個文件(jquery、jquery插件等)
        • 合并所有css文件成一個文件
        • 添加一個唯一的版本號到合并的文件中,日后我們可以控制瀏覽器緩存
        • 避免當我們在運行時迷你化和合并文件時發生的沖突
        • 引用新的合并過的文件 

               1.找到Visual studio Project File(.csporj)

               2.修改一個.cs文件,確保項目文件可以重新編譯(如果我們只是修改js和css文件,項目不會重新編譯)

               3.使用msbuild Extension Pack(http://msbuildextensionpackcodeplex.com)

               4.通過bin目錄下webform程序集得到版本號。

               5.使用Msbuild ajaxmodifier 去迷你化js和css文件。

               6.使用Msbuild 去合并迷你化之后的文件。

               7.注意文件以前的引用順序。保持以前的順序。

               8.使用debug symbol vaule去確定是否在release 模式,為新的release build 引用新的合并過的文件。

      •    結果

               主頁快了46%

      •    代碼:

                 為了貼切描述這一過程,一下是proj文件的關鍵code。為了便于大家理解,我在本章的結尾放了一個完整的代碼示例。我們需要安裝msbuild 和 它的擴展 ajaxmodifier 

                

      <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
             Other similar extension points exist, see Microsoft.Common.targets.-->
        <Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" />
        <Import Project="$(MSBuildExtensionsPath)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks" />
        <Target Name="BeforeBuild">
          <ItemGroup>
            <GeneratedCSSJS Include="client/combined.*.css" />
            <GeneratedCSSJS Include="client/combined.*.js" />
          </ItemGroup>
          <Delete Files="@(GeneratedCSSJS)" />
        </Target>
        <Target Name="AfterBuild">
          <!--"Touch" a .cs file to force a rebuild so get a new version number even when only change .css or js files-->
          <Exec Command="ATTRIB -R code/forceRebuild.cs" />
          <Touch Files="code/forceRebuild.cs" />
          <Exec Command="ATTRIB +R code/forceRebuild.cs" />
          <MSBuild.ExtensionPack.Framework.Assembly TaskAction="GetInfo" NetAssembly="$(OutputPath)\MsBuildUsage.dll">
            <Output TaskParameter="OutputItems" ItemName="Info" />
          </MSBuild.ExtensionPack.Framework.Assembly>
          <Message Text="Version:%(Info.AssemblyVersion)" Importance="high" />
          <!--css file that need minimizing-->
          <ItemGroup>
            <CSSMin Include="content\Site.css" />
          </ItemGroup>
          <!--css file to combine-->
          <ItemGroup>
            <CSSCat Include="content\site.min.css" />
          </ItemGroup>
          <!--js file that need minimizing-->
          <ItemGroup>
            <JSMin Include="Scripts\jquery-1.5.1.js"/>
            <JSMin Include="Scripts\MicrosoftMvcAjax.js"/>
          </ItemGroup>
          <!--js file to combine-->
          <ItemGroup>
            <JSCat Include="Scripts\jquery-1.5.1.min.js"/>
            <JSCat Include="Scripts\MicrosoftMvcAjax.min.js"/>
           
          </ItemGroup>
          <!--Actual minimization and combine tasks-->
          <Message Text="minimization and combine js and css files..." Importance="high" />
          <AjaxMin JsSourceFiles="@(JSMin)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".min.js" CssSourceFiles="@(CssMin)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".min.css" />
          <Message Text="Concatinating js and css files..." Importance="high" />
      
          <ReadLinesFromFile File="%(JSCat.Identity)">
          
            <Output TaskParameter="Lines" ItemName="JSLines" />
          </ReadLinesFromFile>
          <WriteLinesToFile File="client/combined.%(Info.AssemblyVersion).min.js" Lines="@(JSLines)" OverWrite="true" />
          <ReadLinesFromFile File="%(CSSCat.Identity)">
            <Output TaskParameter="Lines" ItemName="CSSLines" />
          </ReadLinesFromFile>
      
          <WriteLinesToFile File="client/combined.%(Info.AssemblyVersion).min.css" Lines="@(CSSLines)" OverWrite="true" />
              
          <!--Include the combined files temporarily in project so publish moves them-->
          <ItemGroup>
            <Content Include="client/combined.%(Info.AssemblyVersion).min.js" />
            <Content Include="client/combined.%(Info.AssemblyVersion).min.css" />
          </ItemGroup>
        </Target>

       

          看看結果,我的proj里多了2個文件。我們在引用這兩個文件時候只需要拼接出版本號即可。

             

       

      【圖片最佳化】

        我們平時接觸到的圖片大概分以下幾種:

      •    JPEG JPEG 圖片以 24 位顏色存儲單個光柵圖像。JPEG 是與平臺無關的格式,支持最高級別的壓縮,不過,這種壓縮是有損耗的。
      •    PNG  流式網絡圖形格式(Portable Network Graphic Format,PNG)名稱來源于非官方的“PNG’s Not GIF”,其目的是企圖替代GIF和TIFF文件格式
      •    GIF  GIF 是用于壓縮具有單調顏色和清晰細節的圖像(如線狀圖、徽標或帶文字的插圖)的標準格式。

         如果我們不能確定用哪種格式的圖片,我們需要提供3種不同格式的相同圖片,并且比較它們的質量和圖片占用空間。

         在這里我主要講一下JEPG的壓縮。我的想法是縮小50%的占用空間,看看它的質量如何?

        【圖片優化器】

      •   Jpegtran 用特定的圖像格式從圖像文件中刪除不必要的元數據,無損
      •   PNGcrush PNG優化器
      •   Smushit http://www.smushit.com/ysmush.it/ (同Jpegtran,支持多種格式,雅虎提供)
      •   Paint.Net 按比例壓縮

      下圖是我使用了 PaintNet 和Smushit優化過的圖片。原圖是右邊的,大小32K。PaintNet壓縮50%后為左上圖。下圖是使用Smushit去掉無用的元數據。大小30K。

       

      【CSS 圖片拼合器】

       

        Css拼合器是一種合并圖片的工具。說它是一種,就是有很多工具可以實現這個功能。

      •   它的主要功能是可以把很多小圖片合并成一張圖片,這樣有效減少了httprequest的次數。
      •   使用小圖片時,只需要根據位置在那張圖片上定位。

        我們可以訪問:http://spritegen.website-performance.org/ 去使用它。

        【try it】

      1.    訪問 css 拼合器站點。
      2.    把需要拼接的圖片打包成zip格式。
      3.    上傳
      4.    勾選一些自定義的選項
      5.    生成

          我去人人網主頁選擇了3張圖片,使用壓縮工具把它們打包,并且上傳。

           

          點擊了最下邊生成拼合圖片之后。可以看到上方多了3行css 規則:

          

      .sprite-rrdesk{ background-position: 0 0; width: 75px; height: 75px; } 
      .sprite-rrgame{ background-position: 0 -125px; width: 75px; height: 75px; } 
      .sprite-rrmusic{ background-position: 0 -250px; width: 75px; height: 75px; } 

       

          讓我們看看合并之后的圖片:

       

       

         

           在項目中使用的時候我們先引用css,在html里只需要這樣就可以啦:

       

      <span class = "sprite-rrgame"> <span>

       

              

         msbuild demo的源代碼:

         https://files.cnblogs.com/techborther/MsBuildUsage.7z

        【msbuild 參考】  :http://msdn.microsoft.com/zh-cn/library/0k6kkbsd.aspx

              感謝閱讀,下一章更精彩:)

      posted @ 2012-08-19 19:44  技術弟弟  閱讀(6664)  評論(35)    收藏  舉報
      主站蜘蛛池模板: 少妇高潮尖叫黑人激情在线 | 九九热在线这里只有精品| 国产情侣激情在线对白| 国产精品99久久免费| 国产精品偷乱一区二区三区| 久久高潮少妇视频免费| 国产免费无遮挡吃奶视频| 亚洲女人天堂成人av在线| 99riav精品免费视频观看| 老司机性色福利精品视频| 国产福利社区一区二区| 狠狠干| 亚洲成人高清av在线| www国产精品内射熟女| 老鸭窝| 日本中文一区二区三区亚洲| 好硬好湿好爽好深视频| 国产一区二区三区九九视频 | 日本亚洲一区二区精品久久| 強壮公弄得我次次高潮A片| 久久精品国产99久久久古代 | 国产午夜福利精品视频| 亚洲精品码中文在线观看| 风韵丰满熟妇啪啪区老老熟妇 | 97久久精品人人澡人人爽| 河曲县| 久久中文字幕一区二区| 国产精品香港三级国产av| 尤物视频色版在线观看| 国产一区一一区高清不卡| 伊人久久大香线蕉综合影院首页| 亚洲一区二区中文av| 99中文字幕精品国产| 亚洲综合激情五月色一区| 国产亚洲精品第一综合另类无码无遮挡又大又爽又黄的视频 | 美女无遮挡免费视频网站| 日本中文字幕乱码免费| 欧美精品一区二区三区在线观看| 武装少女在线观看高清完整版免费| 亚洲五月天一区二区三区| 国产亚洲久久久久久久|