減小頁面大小以減少網(wǎng)絡(luò)響應(yīng)時間的最簡單影響最大的技術(shù)就是是使用gzip編碼來壓縮HTTP響應(yīng)包跳座。
壓縮是如何工作的:
Web客戶端可以通過HTTP請求中的Accept-Encoding頭來表示對壓縮的支持杂瘸。
Web服務(wù)器通過響應(yīng)中的Content-Encoding頭來通知Web客戶端龄恋。
gzip是目前最流行和最有效的壓縮方法值桩。
壓縮的內(nèi)容:
壓縮的內(nèi)容包括:HTML文檔玻熙,腳本和樣式表(最常見)以及包括XML和JSON在內(nèi)的任何文本響應(yīng)耕拷。圖片和PDF不包括在內(nèi)(因為它們以及被壓縮了)种樱。
壓縮的成本包括:服務(wù)器端花費額外的CPU周期來完成壓縮⊥笱玻客戶端要對壓縮文件進(jìn)行解壓縮玄坦。
mod_gzip_minimum_file_size指令控制著希望壓縮的文件的最小值,默認(rèn)值是500B绘沉。
配置:
Apache是Internet上最流行的Web服務(wù)器煎楣。
Apache 1.3的gzip壓縮由mod_gzip模塊提供。
Apache 2.x的壓縮通過mod_deflate模塊完成车伞。
代理緩存:
解決代理緩存的方法是在Web服務(wù)器的響應(yīng)中添加Vary頭择懂。
代理會緩存每個響應(yīng)的兩個版本:Accept-Encoding為gzip時的壓縮內(nèi)容和沒有指定Accept-Encoding時的非壓縮內(nèi)容。
默認(rèn)情況下另玖,mod_gzip會向所有響應(yīng)添加Vary:Accept Encoding頭困曙,以驅(qū)使代理執(zhí)行正確的操作。
邊緣情形:
用于設(shè)置瀏覽器白名單的指令過于復(fù)雜谦去,無法使用HTTP頭進(jìn)行編碼慷丽。最佳做法是將User-Agent作為代理的另外一種評判標(biāo)準(zhǔn)添加到Vary頭中。
如何平衡壓縮和代理支持的決定是很復(fù)雜的鳄哭,需要在加快響應(yīng)時間要糊,減少帶寬開銷和邊緣情形瀏覽器缺陷之間進(jìn)行權(quán)衡。