成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【網站性能指南】之四前端性能

開發 前端
在這一章,我們會聚焦在前端性能:外部的Css和Javascript;Css和Javascript的迷你化與合并;圖片的最佳化;Css 圖片拼合器

【概述】

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

外部的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 和傳輸數據量 的行之有效的方式。

迷你化 

1.移除白空格、注釋和多余的分號等

2.同樣可以看到這樣的文件名中包含".min" (如果你經常使用jquery的插件,你會看到很多min文件)

3.我們看一下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 

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

  1. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.   
  2.        Other similar extension points exist, see Microsoft.Common.targets.-->  
  3.   <Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" />  
  4.   <Import Project="$(MSBuildExtensionsPath)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks" />  
  5.   <Target Name="BeforeBuild">  
  6.     <ItemGroup>  
  7.       <GeneratedCSSJS Include="client/combined.*.css" />  
  8.       <GeneratedCSSJS Include="client/combined.*.js" />  
  9.     </ItemGroup>  
  10.     <Delete Files="@(GeneratedCSSJS)" />  
  11.   </Target>  
  12.   <Target Name="AfterBuild">  
  13.     <!--"Touch" a .cs file to force a rebuild so get a new version number even when only change .css or js files-->  
  14.     <Exec Command="ATTRIB -R code/forceRebuild.cs" />  
  15.     <Touch Files="code/forceRebuild.cs" />  
  16.     <Exec Command="ATTRIB +R code/forceRebuild.cs" />  
  17.     <MSBuild.ExtensionPack.Framework.Assembly TaskAction="GetInfo" NetAssembly="$(OutputPath)\MsBuildUsage.dll">  
  18.       <Output TaskParameter="OutputItems" ItemName="Info" />  
  19.     </MSBuild.ExtensionPack.Framework.Assembly>  
  20.     <Message Text="Version:%(Info.AssemblyVersion)" Importance="high" />  
  21.     <!--css file that need minimizing-->  
  22.     <ItemGroup>  
  23.       <CSSMin Include="content\Site.css" />  
  24.     </ItemGroup>  
  25.     <!--css file to combine-->  
  26.     <ItemGroup>  
  27.       <CSSCat Include="content\site.min.css" />  
  28.     </ItemGroup>  
  29.     <!--js file that need minimizing-->  
  30.     <ItemGroup>  
  31.       <JSMin Include="Scripts\jquery-1.5.1.js"/>  
  32.       <JSMin Include="Scripts\MicrosoftMvcAjax.js"/>  
  33.     </ItemGroup>  
  34.     <!--js file to combine-->  
  35.     <ItemGroup>  
  36.       <JSCat Include="Scripts\jquery-1.5.1.min.js"/>  
  37.       <JSCat Include="Scripts\MicrosoftMvcAjax.min.js"/>  
  38.        
  39.     </ItemGroup>  
  40.     <!--Actual minimization and combine tasks-->  
  41.     <Message Text="minimization and combine js and css files..." Importance="high" />  
  42.     <AjaxMin JsSourceFiles="@(JSMin)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".min.js" CssSourceFiles="@(CssMin)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".min.css" />  
  43.     <Message Text="Concatinating js and css files..." Importance="high" />  
  44.  
  45.     <ReadLinesFromFile File="%(JSCat.Identity)">  
  46.       
  47.       <Output TaskParameter="Lines" ItemName="JSLines" />  
  48.     </ReadLinesFromFile>  
  49.     <WriteLinesToFile File="client/combined.%(Info.AssemblyVersion).min.js" Lines="@(JSLines)" OverWrite="true" />  
  50.     <ReadLinesFromFile File="%(CSSCat.Identity)">  
  51.       <Output TaskParameter="Lines" ItemName="CSSLines" />  
  52.     </ReadLinesFromFile>  
  53.  
  54.     <WriteLinesToFile File="client/combined.%(Info.AssemblyVersion).min.css" Lines="@(CSSLines)" OverWrite="true" />  
  55.           
  56.     <!--Include the combined files temporarily in project so publish moves them-->  
  57.     <ItemGroup>  
  58.       <Content Include="client/combined.%(Info.AssemblyVersion).min.js" />  
  59.       <Content Include="client/combined.%(Info.AssemblyVersion).min.css" />  
  60.     </ItemGroup>  
  61.   </Target> 

#p#

【圖片***化】

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

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】

訪問 css 拼合器站點。

把需要拼接的圖片打包成zip格式。

上傳

勾選一些自定義的選項

生成

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

點擊了最下邊生成拼合圖片之后??梢钥吹缴戏蕉嗔?行css 規則:

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

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

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

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

msbuild demo的源代碼:

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

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

原文鏈接:http://www.cnblogs.com/techborther/archive/2012/08/19/2624989.html

【編輯推薦】

  1. 【網站性能指南】之一概述
  2. 【網站性能指南】之二網站性能測量神器
  3. 【網站性能指南】之三基礎建設
  4. Web前端應該掌握的初、中、高、技能
  5. 學習Web開發技術***教程網站和博客 

 

責任編輯:張偉 來源: 技術弟弟的博客
相關推薦

2012-08-20 09:22:32

2012-08-20 09:56:27

Web

2012-08-20 13:25:46

Web

2019-11-01 14:00:58

前端性能優化代碼

2023-08-13 16:49:54

2023-11-25 20:16:22

前端

2023-12-17 14:49:20

前端首屏時間

2021-05-31 08:30:50

監控網站性能

2023-03-01 09:07:44

前端監控異常

2024-06-12 00:00:05

2021-09-08 10:42:45

前端面試性能指標

2010-06-28 14:11:23

基調網路中國網站性能行業參考數據

2011-07-09 23:24:57

PHP

2010-12-31 13:30:12

2014-04-16 09:56:09

行業網站性能指數

2023-09-08 15:37:29

軟件開發性能

2023-04-10 11:18:38

前端性能優化

2018-11-14 19:30:57

前端Javascript性能優化

2024-01-30 13:53:40

前端性能Chrome

2022-11-16 12:03:13

性能優化前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久成人免费视频 | 日韩精品国产精品 | 盗摄精品av一区二区三区 | 亚洲一区网站 | 日本久久网| 国产一级在线 | 91精品国产综合久久婷婷香蕉 | 亚洲一区二区三区在线播放 | 91国产在线视频在线 | 欧美日韩a| 99re国产 | 亚洲国产成人av好男人在线观看 | 日韩二区| 欧美成人免费 | 免费一区二区三区 | 涩爱av一区二区三区 | 成人在线免费电影 | 一区精品视频在线观看 | 久久久久久成人 | 日韩精品一区二区三区中文在线 | 羞羞的视频免费看 | 欧美日韩国产在线 | 精品国产免费人成在线观看 | 亚洲精品免费看 | 久久久久九九九女人毛片 | 国产aⅴ | 欧美中文一区 | 成人二区 | 日韩av在线免费 | 欧美一区二区三区四区视频 | 中文av电影 | 精品一区二区三区四区外站 | 亚洲第一天堂 | 国产成人精品一区二区三 | 九九九久久国产免费 | 欧美日韩一区精品 | 国产成人99久久亚洲综合精品 | 精品成人69xx.xyz| 亚洲欧美一区二区三区国产精品 | 久久在线| 日韩精品在线免费观看 |