Web 前端優化最佳實踐第二部分面向 Server 。目前共計有 6 條實踐規則。【注,這最多算技術筆記,查看最原始內容,還請訪問:Exceptional Performance : Best Practices for Speeding Up Your Web Site 】
1. 使用 CDN (Use a Content Delivery Network)
國內 CDN 的普及還不夠。不過我們有獨特的電信、網通之間的問題,如果針對這個作優化,基本上也算能收到 CDN 或類似的效果吧(假裝如此)。【Tin 說國內 CDN 用的挺多,看看 CDN 廠商的市場就知道了,還沒走入尋常百姓家】
2. 添加 Expires 或 Cache-Control 信息頭 (Add an Expires or a Cache-Control Header)各個浏覽器都有針對的方案, Apache 例子【注意:下面的說明例子還不夠精細,具體的環境上還要加一些調整】:ExpiresActive On
ExpiresByType image/gif "modification plus 1 weeks"
Lighttpd 啟用 mod_expire 模塊 後:
$HTTP["url"] =~ "\.(jpg|gif|png)$" {
expire.url = ( "" => "access 1 years" )
}
Nginx 例子參考:
location ~* \.(jpg|gif|png)$ {
3. 壓縮內容 (Gzip Components)
if (-f $request_filename) {
expires max;
break;
}
}
對於絕大多數站點,這都是必要的一步,能有效減輕網絡流量壓力。或許有人擔心對 CPU 壓縮對於 CPU 的影響,放心大膽的整吧,沒事兒。Nginx 例子:
gzip on;
gzip_types text/plain text/html text/css ext/javascript;
另外參見:
IIS 如何啟用 Gzip 壓縮? 4. 設置 Etags (Configure ETags)
對於 Etag,可能是多數網站維護者都會忽略的地方。在這一系列優化規則出現之前,可能互聯網上絕大多數站點都對這個問題忽略了。當然,Etag 對多數站點性能的影響並不是很大。除非是面向 RSS 的網站。【看到有朋友批評說寫的簡略,並且說 IE 不支持 ETag。明確說一下:IE 支持 ETag,倒是使用 IIS 要注意相關 Etag Bug。】
補充:我的意思是"很多網站在不注意的情況下都是打開 Etag 的,而沒有網站關心如何用,消耗資源而不知。並不是說 Etag 不好,合理利用 Etag ,絕對能取得很好的收益.
5. 盡早刷新 Buffer (Flush the Buffer Early)
對這一條,琢磨了半天,貌似還是異步的思路。能更好的提升用戶體驗?
6. 對 AJAX 請求使用 GET 方法 (Use GET for AJAX Requests)
XMLHttpRequest POST 要兩步,而 GET 只需要一步。但要注意的是在 IE 上 GET 最大能處理的 URL 長度是 2K。