卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

前端開發(fā)性能優(yōu)化規(guī)范

成都全搜索前端開發(fā)性能優(yōu)化規(guī)范網(wǎng)站性能優(yōu)化是一個很綜合的話題,涉及到服務器的配置和網(wǎng)站前后端程序等各個方面,前端開發(fā)組以yahoo 的yslow 提高網(wǎng)頁效率的14條準則和google 的page s

成都全搜索前端開發(fā)性能優(yōu)化規(guī)范

網(wǎng)站性能優(yōu)化是一個很綜合的話題,涉及到服務器的配置和網(wǎng)站前后端程序等各個方面,前端開發(fā)組以yahoo 的yslow 提高網(wǎng)頁效率的14條準則和google 的page speed 為理論基礎,結(jié)合自身的實際情況初步制定出成都全搜索前端開發(fā)性能優(yōu)化規(guī)范,望大家在開發(fā)中遵循以下規(guī)范優(yōu)化性能。

傳輸優(yōu)化

第一條:Make Fewer HTTP Requests 盡可能的減少HTTP 的Request 請求數(shù)。 終端用戶響應的時間中,有80用于下載各項內(nèi)容。這部分時間包括下載頁面中的圖像、樣式表、腳本、Flash 等。通過減少頁面中的元素可以減少HTTP 請求的次數(shù)。這是提高網(wǎng)頁速度的關(guān)鍵步驟。

減少HTTP 請求的方法包括:合并Javascript/CSS文件、使用CSS Sprites(合并背景圖片) 。

其中綠色的為傳輸文件花費的Reveive 時間,而前面白色的為檢索緩存和確認鏈接是否有效的Blocked 時間。老版本的IE 和Firefox 都使用較低的單個主機并發(fā)連接數(shù)(2),而新版本的IE 和Firefox 都使用較高的單個主機并發(fā)連接數(shù)(6),所以除了正在下載的文件外其他的HTTP 請求都要排隊,請求越多Blocked 的時間就越長。

IE7 2

,

IE8 6

Firefox2

Firefox3 2 6 network.http.max-persistent-connections-per-server:6 盡量減少HTTP 的Request 請求。

1. CSS Sprites(合并背景圖片), 最有效的方法

CSS Sprites :簡單的說就是利用CSS 的background-position 屬性,控制一張背景圖片的顯示區(qū)域。把能合并在一起的背景圖片都合并到一張圖上。如下圖:

將20個單獨的背景圖片合并成一張背景圖,相當于把20個HTTP 請求減小為1個HTTP 請求。

2. 合并css 文件

為了方便組織和規(guī)劃樣式表,將用于不同用途的樣式表文件分離開來,形成不同的css 文件。采用兩套版本,編輯版和發(fā)布版。編輯版仍然使用多個css 文件以便于規(guī)劃和組織。而等到發(fā)布的時候,再將多個css 文件合并到一個文件中去,從而達到減少HTTPRequest 請求數(shù)的目的。

3. 合并js 文件

原因和處理方法同上。

,

第二條:Reduce DNS Lookups 減少DNS 查詢

域名系統(tǒng)(DNS )提供了域名和IP 的對應關(guān)系,就像電話本中人名和他們的電話號碼的關(guān)系一樣。當你在瀏覽器地址欄中輸入www.cdqss.com 時,DNS 解析服務器就會返回這個域名對應的IP 地址。DNS 解析的過程同樣也是需要時間的。一般情況下返回給定域名對應的IP 地址會花費20到120毫 秒的時間。而且在這個過程中瀏覽器什么都不會做直到DNS 查找完畢。

真正意義上的指導其實有兩條:

1:如果不是必須,請不要把網(wǎng)站放到兩臺服務器上。

2:網(wǎng)頁中的圖片、css 文件、js 文件、flash 文件等等,不要太多的分散在不同的網(wǎng)絡空間中(經(jīng)過測試現(xiàn)階段適合我們的是使用4個圖片服務器)。

第三條:Gzip Components 啟用Gzip 壓縮

Gzip 的思想就是把文件先在服務器端進行壓縮,然后再傳輸。這對于體積較大的純文字型的文件有效果明顯。

從HTTP/1.1開始,web 客戶端都默認支持HTTP 請求中有Accept-Encoding 文件頭的壓縮格式:

Accept-Encoding: gzip, deflate

如果web 服務器在請求的文件頭中檢測到上面的代碼,就會以客戶端列出的方式壓縮響應內(nèi)容。Web 服務器把壓縮方式通過響應文件頭中的Content-Encoding 來返回給瀏覽器。 Content-Encoding: gzip

Gzip 大概可以減少70的響應規(guī)模。

圖像和PDF 文件由于已經(jīng)壓縮過了所以不能再進行g(shù)zip 壓縮。如果試圖gizp 壓縮這些文件的話不但會浪費CPU 資源還會增加文件的大小。

,

第四條:使用GBK 編碼

GBK 的文字編碼是雙字節(jié)來表示的,即不論中、英文字符均使用雙字節(jié)來表示,只不過為區(qū)分中文,將其最高位都定成1。UTF -8編碼則是用以解決國際上字符的一種多字節(jié)編碼,它對英文使用8位(即一個字節(jié)),中文使用24位(三個字節(jié))來編碼。對中文字符GBK 能節(jié)省空間。

第五條:Use a Content Delivery Network 使用CDN

YSlow 的官方解釋是:用戶與你網(wǎng)站服務器的接近程度會影響響應時間的長短。把你的網(wǎng)站內(nèi)容分散到多個、處于不同地域位置的服務器上可以加快下載速度。

結(jié)合中國的網(wǎng)絡特色,這個便不難理解了?!氨狈椒掌鳌薄ⅰ澳戏椒掌鳌?、“電信服務器”、“網(wǎng)通服務器”……這些詞聽起來是那么熟悉。如果,一個北京的電信用戶試圖從廣東的網(wǎng)通服務器上打開一個類似《壁紙合集》帖子的網(wǎng)頁時,你就能很深刻的理解。

鑒于這個不是我們開發(fā)人員力所能及的準則,所以這里也就不多言了。

第六條:Avoid Redirects 避免跳轉(zhuǎn)

跳轉(zhuǎn)會降低用戶體驗。在用戶和HTML 文檔中間增加一個跳轉(zhuǎn),會拖延頁面中所有元素的顯示,因為在HTML 文件被加載前任何文件(圖像、Flash 等)都不會被下載。

鏈接地址寫明確。例如:將http://www.cdqss.com/寫成http://www.cdqss.com (注意最后面一個“/”符號)。這兩個網(wǎng)址都能訪問到,但是,它們是有區(qū)別的。http://www.cdqss.com會被重新指向http://www.cdqss.com/ 。顯然,中間多一次加載

,

時間。

第七條:Minify JavaScript and CSS 減少JavaScript 和CSS 文件的體積

最終發(fā)布版本中把沒有必要的空行、空格和注釋全部去掉。

第八條:減少HTTP 404 (文件未找到)

HTTP 請求時間消耗是很大的,因此使用HTTP 請求來獲得一個沒有用處的響應(例如404沒有找到頁面)是完全沒有必要的,它只會降低用戶體驗而不會有一點好處。

第九條:使用GET 方式發(fā)送AJAX 請求

Yahoo!Mail 團隊發(fā)現(xiàn),當使用 XMLHttpRequest 時,瀏覽器中的POST 方法是一個“兩步走”的過程:首先發(fā)送文件頭,然后才發(fā)送數(shù)據(jù)。因此使用GET 最為恰當,因為它只需 發(fā)送一個TCP 包(除非你有很多cookie) 。IE 中URL 的最大長度為2K ,因此如果你要發(fā)送一個超過2K 的數(shù)據(jù)時就不能使用GET 了。

一個有趣的不同就是POST 并不像GET 那樣實際發(fā)送數(shù)據(jù)。根據(jù)HTTP 規(guī)范,GET 意味著“獲取”數(shù)據(jù),因此當你僅僅獲取數(shù)據(jù)時使用GET 更加有意義(從語意上講也是如此) ,相反,發(fā)送并在服務端保存數(shù)據(jù)時使用POST 。

避免阻塞

第一條:Put CSS at the Top 把CSS 樣式放在頁面的上方

把樣式表放到文檔的內(nèi)部似乎會加快頁面的下載速度。這是因為把樣式表放到內(nèi)會使頁面有步驟的加載顯示。注重性能的前端服務器往往希望頁面有秩序地加載。同時,我們也希望瀏覽器把已經(jīng)接收到內(nèi)容盡可能顯示出來。向用戶返回可視化的反饋,比如進程指針,HTML 頁面就是進程指針。當瀏覽器有序地加載文件頭、導航欄、頂部的logo 等對于等待頁面加載的用戶來說都可以作為可視化的反饋。這從整體上改善了用戶體驗。

,

把樣式表放在文檔底部的問題是在包括Internet Explorer在內(nèi)的很多瀏覽器中這會中止內(nèi)容的有序呈現(xiàn)。瀏覽器中止呈現(xiàn)是為了避免樣式改變引起的頁面元素重繪。用戶不得不面對一個空白頁面。無論是引起白屏還是出現(xiàn)沒有樣式化的內(nèi)容都不值得去嘗試。最好的方案就是按照HTML 規(guī)范在文檔內(nèi)加載樣式表。

第二條:Move Scripts to the Bottom 將腳本放在底部

腳本帶來的問題就是它阻止了頁面的平行下載。HTTP/1.1 規(guī)范建議,瀏覽器每個主機名的并行下載內(nèi)容不超過兩個。如果你的圖片放在多個主機名上,你可以在每個并行下載中同時下載2個以上的文件。但是當下載腳本 時,瀏覽器就不會同時下載其它文件了,即便是主機名不相同。

在某些情況下把腳本移到頁面底部可能不太容易。比如說,如果腳本中使用了document.write 來插入頁面內(nèi)容,它就不能被往下移動了。這里可能還會有作用域的問題。

一個經(jīng)常用到的替代方法就是使用延遲腳本。defer 屬性表明推遲加載,它告訴瀏覽器繼續(xù)顯示。