- 減少HTTP請求次數(shù)
合并圖片佑刷、CSS莉擒、JS,改進(jìn)首次訪問用戶等待時間项乒。
- 使用CDN
就近緩存==>智能路由==>負(fù)載均衡==>WSA全站動態(tài)加速
- 避免空的src和href
當(dāng)link標(biāo)簽的href屬性為空啰劲、script標(biāo)簽的src屬性為空的時候,瀏覽器渲染的時候會把當(dāng)前頁面的URL作為它們的屬性值檀何,從而把頁面的內(nèi)容加載進(jìn)來作為它們的值蝇裤。測試
- 為文件頭指定Expires
使內(nèi)容具有緩存性。避免了接下來的頁面訪問中不必要的HTTP請求频鉴。
- 使用gzip壓縮內(nèi)容
壓縮任何一個文本類型的響應(yīng)栓辜,包括XML和JSON,都是值得的垛孔。舊文章
- 把CSS放到頂部
- 把JS放到底部
防止js加載對之后資源造成阻塞藕甩。
- 避免使用CSS表達(dá)式
- 將CSS和JS放到外部文件中
目的是緩存,但有時候為了減少請求周荐,也會直接寫到頁面里狭莱,需根據(jù)PV和IP的比例權(quán)衡。
- 權(quán)衡DNS查找次數(shù)
減少主機(jī)名可以節(jié)省響應(yīng)時間概作。但同時腋妙,需要注意,減少主機(jī)會減少頁面中并行下載的數(shù)量讯榕。
IE瀏覽器在同一時刻只能從同一域名下載兩個文件骤素。當(dāng)在一個頁面顯示多張圖片時匙睹,IE 用戶的圖片下載速度就會受到影響。所以新浪會搞N個二級域名來放圖片济竹。
- 精簡CSS和JS
避免跳轉(zhuǎn)
12.同域:注意避免反斜杠 “/” 的跳轉(zhuǎn)痕檬;
跨域:使用Alias或者mod_rewirte建立CNAME(保存域名與域名之間關(guān)系的DNS記錄)
刪除重復(fù)的JS和CSS
重復(fù)調(diào)用腳本,除了增加額外的HTTP請求外送浊,多次運算也會浪費時間梦谜。在IE和Firefox中不管腳本是否可緩存,它們都存在重復(fù)運算JavaScript的問題罕袋。
- 配置ETags
它用來判斷瀏覽器緩存里的元素是否和原來服務(wù)器上的一致改淑。比last-modified date更具有彈性,例如某個文件在1秒內(nèi)修改了10次浴讯,Etag可以綜合Inode(文件的索引節(jié)點(inode)數(shù))朵夏,MTime(修改時間)和Size來精準(zhǔn)的進(jìn)行判斷,避開UNIX記錄MTime只能精確到秒的問題榆纽。 服務(wù)器集群使用仰猖,可取后兩個參數(shù)。使用ETags減少Web應(yīng)用帶寬和負(fù)載
- 可緩存的AJAX
“異步”并不意味著“即時”:Ajax并不能保證用戶不會在等待異步的JavaScript和XML響應(yīng)上花費時間奈籽。
使用GET來完成AJAX請求
當(dāng)使用XMLHttpRequest時饥侵,瀏覽器中的POST方法是一個“兩步走”的過程:首先發(fā)送文件頭,然后才發(fā)送數(shù)據(jù)衣屏。因此使用GET獲取數(shù)據(jù)時更加有意義躏升。
- 減少DOM元素數(shù)量
是否存在一個是更貼切的標(biāo)簽可以使用?人生不僅僅是DIV+CSS
- 避免404
有些站點把404錯誤響應(yīng)頁面改為“你是不是要找***”狼忱,這雖然改進(jìn)了用戶體驗但是同樣也會浪費服務(wù)器資源(如數(shù)據(jù)庫等)膨疏。最糟糕的情況是指向外部 JavaScript的鏈接出現(xiàn)問題并返回404代碼。首先钻弄,這種加載會破壞并行加載佃却;其次瀏覽器會把試圖在返回的404響應(yīng)內(nèi)容中找到可能有用的部分當(dāng)作JavaScript代碼來執(zhí)行。
- 減少Cookie的大小
使用無cookie的域
比如圖片 CSS 等窘俺,Yahoo! 的靜態(tài)文件都在 yimg.com 上饲帅,客戶端請求靜態(tài)文件的時候,減少了 Cookie 的反復(fù)傳輸對主域名 (yahoo.com) 的影響瘤泪。
- 不要使用濾鏡
png24的在IE6半透明那種東西灶泵,別亂使,淡定的切成PNG8+jpg
不要在HTML中縮放圖片
- 縮小favicon.ico并緩存