《
高性能網(wǎng)站建設(shè)的14個原則》文章地址:http://www.tfxk.com/wangyesheji/jianzhanjingyan/0302349632013.htm
1. 不一致:不同Web服務(wù)器(Apache, IIS等)定義的ETag格局不同
這次看的是原版。我對Web開發(fā)較缺少實(shí)際教訓(xùn),加之看得匆倉促,因而可能存在漏掉、表述不當(dāng)之處,盼望寬大網(wǎng)友不吝斧正。
ETag是除Last-Modified之外的另一種HTTP Cache手腕。通過hash的措施辨識資源是否被修正。但ETag存在一些問題,例如:
2. URL丑化
作者給出的倡議是:要么依據(jù)你的運(yùn)用特色改良已有的ETag計(jì)算方式,頁面重構(gòu)應(yīng)注意repaint和reflow的9個問題,要么羅唆就不必ETag,而改用最簡略的Last-Modified。
因?yàn)镴avaScript跟CSS絕對穩(wěn)固,咱們可以對其對應(yīng)的資源設(shè)置較長的失效期(參考原則3)。
為你的站點(diǎn)提供多種線路(例如海內(nèi)電信、聯(lián)通、挪動)、多個地輿地位(北方、南方、西部)的訪問,使得所有用戶都可能疾速訪問。
原則12 移除重復(fù)的腳本
作者給出的提議是:
這仿佛與原則1中的合并思維相悖,但實(shí)在不然:考慮每個頁面都引入了一個公共的JavaScript資源(例如jQuery或是ExtJS這樣的JavaScript庫),單就一個頁面的表示來看,內(nèi)聯(lián)(行將JavaScript嵌入HTML)頁面將比外聯(lián)(使用<script>標(biāo)簽引入)頁面加載更快(由于其較少的HTTP請求數(shù))。但如果有良多頁面都引入了這個公共JavaScript資源,那么內(nèi)聯(lián)計(jì)劃會造成重復(fù)傳輸(因?yàn)檫@個資源內(nèi)嵌在每個頁面中了,所以每次翻開一個頁面都要將這局部資源傳輸一遍,從而造成網(wǎng)絡(luò)傳輸資源的揮霍)。而將這種資源獨(dú)立出來外聯(lián)援用可以解決這個問題。
瀏覽版jQuery代碼,230KB
準(zhǔn)則1 減少HTTP懇求數(shù)
原則10 壓縮你的JavaScript
本書另有對其中個別問題深刻探索的進(jìn)階篇《Even Faster Web Sites》,中譯《高性能網(wǎng)站建設(shè)進(jìn)階指南》。
每次請求新域名都須要進(jìn)行通過DNS查找不同的域名,且DNS緩存無奈施展作用。因此應(yīng)當(dāng)盡量將站點(diǎn)組織在一個統(tǒng)一域名下,避免使用過多子域名
1. 使用Keep-Alive堅(jiān)持銜接
在可讀性好的URL與實(shí)際資源URL之間轉(zhuǎn)換,例如對于Google Toolbar,用戶記得住
壓縮版jQuery代碼(用于實(shí)際安排),頁面設(shè)計(jì)中的中文測試,89.4KB
原則4 使用Gzip壓縮
2. ETag的計(jì)算是不穩(wěn)定的(由于斟酌過多因素),例如:
通過設(shè)置<img>標(biāo)簽的usemap屬性與使用<map>標(biāo)簽可以在一幅圖片上切分出多個區(qū)域,指向不同的鏈接。比起使用多幅圖片分辨構(gòu)造鏈接減少了請求數(shù)。
原則14 在Ajax中利用HTTP Cache
通過設(shè)置元素的background-position款式做到。個別用于界面圖標(biāo)。典范的能夠參考TinyMCE編纂器上方的那些小按鈕。多個小圖本質(zhì)是從一個同一的大圖通過不同的偏移量裁剪而來,這樣加載界面上的眾多按鈕實(shí)際上只有要求一次(請求大圖一次),從而減少HTTP請求數(shù)。
Ajax是異步請求,異步請求不會梗阻你當(dāng)初的操作,而且當(dāng)請求完成時,面向?qū)ο蟮腦HTML與CSS編程,你立刻就可以看到成果。但異步不代表可以剎時完成,也不代表能夠容忍它花無窮多的時間完成。因此對于Ajax請求的性能也需要器重。有許多Ajax請求訪問的是一些相對穩(wěn)定的資源,因此別忘了對Ajax請求利用好HTTP Cache機(jī)制,詳細(xì)參見原則3、13。
2) 資源不變,而由于一些其余因素的變更,例如配置文件更改,導(dǎo)致ETag變化。直接成果是系統(tǒng)更新后客戶端大范圍產(chǎn)生Cache失效,導(dǎo)致傳輸量大增,站點(diǎn)性能降落。
Tag:網(wǎng)站建設(shè) 網(wǎng)站建設(shè)
這本書中給出了14條網(wǎng)站性能晉升的原則,每個原則獨(dú)破成章,配有示例。這些原則大多數(shù)都十分適用,合適站點(diǎn)架構(gòu)師、前端工程師。其中對于前端工程師的意思更大一些。
2. CSS Sprite(CSS貼圖整合/貼圖拼合/貼圖定位)
舊站點(diǎn)遷徙后,為了避免舊的URL失效,通常將對舊URL的請求重定向至新體系的對應(yīng)地址。
1) 相同資源在不同服務(wù)器上盤算出來的ETag不一樣,而大型Web利用通常由不止一臺服務(wù)器供給服務(wù),這就導(dǎo)致客戶端在服務(wù)器A緩存好的資源明明依然有效,而在下次請求B時因?yàn)镋Tag不同而被認(rèn)定為生效,導(dǎo)致雷同資源的反復(fù)傳輸。
2. 減少域名
1. 防止URL失效
原則13 警惕處理ETag
原則2 利用多線路CDN
不要在一個頁面中重復(fù)引入相同的腳本。例如腳本B和C都依賴于A,那么在使用了B和C的頁面中就有可能存在對A的重復(fù)引用。解決辦法,對于簡單的站點(diǎn)手動檢討依賴性,消去重復(fù)引入;對于復(fù)雜的站點(diǎn)則需要構(gòu)建本人的依附治理/版本把持機(jī)制。
3. Inline Image(內(nèi)聯(lián)圖片)
使用JS壓縮工具壓縮你的JavaScript吧,很有效哦?纯磈Query的兩個不同的發(fā)行版本就曉得差別了:
原則11 盡量避免重定向
原則6 將腳本置于頁面尾部
作者先容上面的豆瓣鏈接中有,就不再照搬過來了。
1. Image Map
先加載樣式表,這樣頁面渲染得以較早開端,給用戶頁面加載較快的感到。
給不頻繁更新的資源(例如靜態(tài)圖)加較長的Expires頭信息,這些資源一經(jīng)緩存,將來很長時間都可以不再重復(fù)傳輸了。
原則9 減少DNS查找
--> [網(wǎng)站建設(shè)之]高機(jī)能網(wǎng)站建設(shè)的14個原則
假如連接斷開,非常實(shí)用的CSS統(tǒng)計(jì)圖表實(shí)例,那么下次連接又要履行DNS查找,即便對應(yīng)的域名-IP映射已被緩存,查找也是要耗費(fèi)一些時間的
原則8 將JavaScript與CSS作為外聯(lián)資源
原則7 避免使用CSS表白式
一次重定向象征著在你真正拜訪到想要看到的頁面前參加了一輪額外的HTTP請求(客戶端發(fā)起HTTP請求→HTTP服務(wù)器返回重定向響應(yīng)→客戶端對新URL發(fā)動請求→HTTP服務(wù)器返回內(nèi)容,下劃線部門為額定的請求),因此消費(fèi)更多的時間(也就給人反映更慢的感覺)。因此除非必要,不要隨便使用重定向。多少個“必要”的情形:
本日大抵閱讀了一下《High Performance Web Sites》。本書的中文版是《高性能網(wǎng)站建設(shè)指南》,靜態(tài)頁面制作注意事項(xiàng)。
在<img>的src中不指定外部圖片文件的URL,而是直接將圖片信息放入。例如src="data:image/gif;base64,R0lGODlhDAAMAL..."某些特別情況下有用(例如一個不大的圖片僅在當(dāng)前頁面用到)。
原則5 將樣式表置于頁眼前部
應(yīng)用Gzip緊縮HTTP報文,減小體積,減少傳輸時光。
過于龐雜的JavaScript腳本邏輯、DOM查找、抉擇操作將會下降頁面處置效力。
起因同5,先處理頁面顯示,頁面渲染較早實(shí)現(xiàn),而腳本邏輯稍后執(zhí)行,這樣給用戶頁面加載較快的感覺。
原則3 應(yīng)用HTTP Cache
結(jié)構(gòu)請求、等候響應(yīng)需要時間,因此請求數(shù)目越少越好。減少請求的總體思路就是合并資源,減少顯示一個頁面需要的文件數(shù)。
(責(zé)任編輯:網(wǎng)站建設(shè))
高性能網(wǎng)站建設(shè)的14個原則相關(guān)文章