Yahoo給出的包括Yslow規(guī)則(22條)的34條 詳細(xì)闡明 ,經(jīng)過(guò)這此規(guī)則對(duì)自己頁(yè)面進(jìn)行一次全面的分析優(yōu)化,能夠進(jìn)步你網(wǎng)站的加載速度。
1.Minimize HTTP Requests 削減HTTP懇求
圖片、CSS、script、flash等等這些都會(huì)增加http懇求數(shù),削減這些元素的數(shù)量就能削減呼應(yīng)時(shí)刻。把多個(gè)JS、CSS在可能的情況下寫進(jìn)一個(gè)文件,頁(yè)面里直接寫入圖片也是不好的做法,應(yīng)該寫進(jìn)CSS里,運(yùn)用 CSS sprites 將小圖拼合后運(yùn)用background來(lái)定位。
2.Use a Content Delivery Network 運(yùn)用CDN技能
CDN 確實(shí)是好東西,8過(guò)服務(wù)器供給商的這項(xiàng)服務(wù)一般是要收費(fèi)的,我以前買的國(guó)內(nèi)空間是有這個(gè)的可是我當(dāng)時(shí)底子不知道啥用,現(xiàn)在沒(méi)了。。。
3.Add an Expires or a Cache-Control Header 設(shè)置頭文件過(guò)期或許靜態(tài)緩存
閱讀器會(huì)用緩存來(lái)削減http懇求數(shù)來(lái)加速頁(yè)面加載的時(shí)刻,假如頁(yè)面頭部加一個(gè)很長(zhǎng)的過(guò)期時(shí)刻,閱讀器就會(huì)一直緩存頁(yè)面里的元素。不過(guò)這樣假如頁(yè)面里的東西變動(dòng)的話就要改名字了,不然用戶端不會(huì)自動(dòng)刷新,看自己衡量了~ 這項(xiàng)能夠經(jīng)過(guò)修改.htaccess文件來(lái)完成。
4.Gzip Components Gzip緊縮
Gzip格局是一種很遍及的緊縮技能,簡(jiǎn)直一切的閱讀器都有解壓Gzip格局的才能,并且它能夠緊縮的比例非常大,一般緊縮率為85%。緊縮沒(méi)緊縮,能夠到 這里 做下測(cè)試。
5.Put Stylesheets at the Top 把CSS放頂部
讓閱讀者能盡早的看到網(wǎng)站的完好款式。
6.Put Scripts at the Bottom 把JS放底部
網(wǎng)站呈現(xiàn)完畢后再進(jìn)行功用設(shè)置,當(dāng)然這些JS要在你的加載過(guò)程中不影響內(nèi)容表現(xiàn)。
7.Avoid CSS Expressions 避免CSS Expressions
CSS表達(dá)式很可怕,這個(gè)只被IE支撐的東西履行時(shí)分的運(yùn)算量非常大,你移動(dòng)一下鼠標(biāo)它都要進(jìn)行重核算的,但有時(shí)分為了做閱讀器的兼容有必要要用到這個(gè)||| IE6去死去死!~
8.Make JavaScript and CSS External 將JS和CSS外鏈
前面講到了緩存這個(gè)事情,一些較為公用的JS和CSS,咱們能夠運(yùn)用外鏈的形式,比如我就是從Google外鏈來(lái)的Jquery文件,假如我的閱讀者在閱讀其他運(yùn)用了這個(gè)外鏈文件的網(wǎng)站時(shí)已經(jīng)下載并緩存了這個(gè)文件,那么他在閱讀我的網(wǎng)站的時(shí)分就不需求再進(jìn)行下載了!~
9.Reduce DNS Lookups 削減DNS查找
貌似是要削減網(wǎng)站從外部調(diào)用資源,我的Google分析和picasa的外鏈圖片都算在里面了。
10.Minify JavaScript and CSS 減小JS和CSS的體積
寫JS和CSS都是有技巧的,用最少的代碼完成同樣的功用,削減空白,增強(qiáng)邏輯性,用縮寫辦法等等,當(dāng)然也有不少東西也能夠幫你完成這一點(diǎn)。
11. Avoid Redirects 避免重定向
再寫入鏈接時(shí),盡管“http://www. ***. com”和“http://www. ***. com/” 僅有一個(gè)最后的“/”只差,可是結(jié)果是不同的,服務(wù)器需求花時(shí)刻把前者重定向?yàn)楹笳呷缓筮M(jìn)行跳轉(zhuǎn),這個(gè)要自己留意,也能夠在Apache里用Alias 或許mod_rewrite或許DirectorySlash處理。
12. Remove Duplicate Scripts 刪去重復(fù)腳本
重復(fù)調(diào)用的代碼閱讀器并不會(huì)識(shí)別忽略,而是會(huì)再次運(yùn)算一遍,這當(dāng)然是大大的糟蹋。
13. Configure ETags 配置ETags
搞不清楚咋回事,總之我是在. htaccess里把它刪去了。
14. Make Ajax Cacheable 緩存Ajax
Ajax是實(shí)時(shí)呼應(yīng)的,在閱讀器接收到新的數(shù)據(jù)前,舊的數(shù)據(jù)被緩存,這樣能夠更好的進(jìn)步功率。
15. Flush the Buffer Early 盡早的開(kāi)釋緩沖
當(dāng)用戶進(jìn)行頁(yè)面懇求時(shí),服務(wù)器端需求花費(fèi)200到500毫秒時(shí)刻來(lái)拼合HTML,將寫在head與body之間,開(kāi)釋緩沖,這樣能夠?qū)⑽募^先發(fā)送出去,然后再發(fā)送文件內(nèi)容,進(jìn)步功率。
16. Use GET for AJAX Requests 用GET辦法進(jìn)行AJAX懇求
Get 辦法和服務(wù)器只要一次交互(發(fā)送數(shù)據(jù)),而 Post 要兩次(發(fā)送頭部再發(fā)送數(shù)據(jù))。
17. Post-load Components 推遲加載組件
最先加載有必要的組件進(jìn)行頁(yè)面初始化,然后再加載其他,YUI Image Loader 是很好的例子。
18. Preload components 預(yù)加載組件
提前加載今后可能用到的東西,和推遲加載并不沖突,它的意圖是為后續(xù)懇求供給更快的呼應(yīng),參見(jiàn)Google主頁(yè)上的CSS sprites應(yīng)用。
19. Reduce the Number of DOM Elements 削減DOM元素?cái)?shù)量
雜亂的頁(yè)面結(jié)構(gòu)意味著更長(zhǎng)的下載及呼應(yīng)時(shí)刻,更合理更高效的運(yùn)用標(biāo)簽來(lái)架構(gòu)頁(yè)面,是好的前端的必備條件。
20. Split Components Across Domains 跨域分離組件
頁(yè)面組件多個(gè)來(lái)源能夠增大你的平行下載量,但留意不要過(guò)多,超過(guò)2-4個(gè)域名會(huì)引起上面說(shuō)到的DNS查找糟蹋。
21. Minimize the Number of iframes 削減iframe數(shù)量
需求更有用的運(yùn)用 ifames。
iframe 長(zhǎng)處:有利于下載緩慢的廣告等第三方內(nèi)容,安全沙箱,并行下載腳本
iframe 缺點(diǎn):即使為空也會(huì)有較大資源耗費(fèi),會(huì)阻止頁(yè)面的onload,非語(yǔ)義
22. No 404s 不要呈現(xiàn)404頁(yè)面
站點(diǎn)自身里(非查找結(jié)果)呈現(xiàn)404頁(yè)面,無(wú)意義的404頁(yè)面會(huì)影響用戶體會(huì)并且會(huì)耗費(fèi)服務(wù)器資源。
23. Reduce Cookie Size 減小Cookie
Cookie在服務(wù)器及閱讀器之間的經(jīng)過(guò)文件頭進(jìn)行交換,盡可能減小Cookie體積,設(shè)置合理的過(guò)期時(shí)刻,能夠很好的進(jìn)步功率。
24. Use Cookie-free Domains for Components 對(duì)組件運(yùn)用無(wú)Cookie的域名
對(duì)靜態(tài)組件的Cookie讀取是一種糟蹋,運(yùn)用另一個(gè)無(wú)Cookie的域名來(lái)寄存你的靜態(tài)組件式一個(gè)好辦法,或許也能夠在Cookie中只寄存帶www的域名。
25. Minimize DOM Access 削減DOM的拜訪次數(shù)
JS拜訪DOM是很慢的,盡量不要用JS來(lái)設(shè)置頁(yè)面布局。
26. Develop Smart Event Handlers 開(kāi)發(fā)靈敏的事情處理句柄
DOM樹(shù)上過(guò)多的元素被加入事情句柄的話,反響功率肯定會(huì)低,YUI事情東西有一個(gè) onAvailable 辦法能夠協(xié)助你靈敏的設(shè)置DOM事情句柄
27. Choose < link >over @import 運(yùn)用< link >而非 @import
在IE中運(yùn)用@import就和在頁(yè)面底部用< link >一樣,咱們前面說(shuō)要把< link >放頂部的。
28. Avoid Filters 避免過(guò)濾器的運(yùn)用
假如需求Alpha通明,不要運(yùn)用AlphaImageLoader,它功率低下并且只對(duì)IE6及以下的版別適用,用PNG8圖片。假如你非要運(yùn)用,加上_filter避免影響IE7+用戶。
29. Optimize Images 優(yōu)化圖片
將你的GIF轉(zhuǎn)為PNG8會(huì)是個(gè)減小體積的好辦法,另外有很多辦法處理你的JPG及PNG圖片以達(dá)到優(yōu)化作用。
30. Optimize CSS Sprites 優(yōu)化CSS Sprites
在CSS Sprites中豎直并盡量緊湊的擺放圖片,盡量將色彩類似的圖片排在一起,會(huì)減小圖片自身的大小及進(jìn)步頁(yè)面圖片顯現(xiàn)速度。
31. Don’t Scale Images in HTML 不要在HTML中縮放圖片
圖片要用多大的就用多大的,1000X1000的圖片被width=”100″ height=”100″今后,自身的KB數(shù)是不會(huì)削減的。
32. Make favicon. ico Small and Cacheable 縮小favicon. ico的大小并緩存它
站點(diǎn)的閱讀器ICO應(yīng)該不是經(jīng)常換吧,那就長(zhǎng)時(shí)刻的緩存它,并且最好控制在1K以下。
33. Keep Components under 25K 保證組件在25K以下
iPhone不能緩存25K以上的組件,并且這仍是要在被緊縮前。
34. Pack Components into a Multipart Document 將組件打包進(jìn)一個(gè)多部分的文檔中
就好像在郵件中加入附件一樣,一個(gè)HTTP懇求就夠了,可是這一技能需求保證你的代理支撐,iPhone就不支撐 |