高性能網站建設-4壓縮組件
阿新 • • 發佈:2018-11-23
ont 影響 組件 但是 web code apach inter 數據
1.使用gzip編碼來壓縮HTTP響應包
- 這是減小頁面大小最為簡單的技術,但影響是最大的。
1.1 從HTTP1.1開始,Web客戶端可以通過HTTP請求中的Accept-Encoding頭來表示對壓縮的支持。
Accept-Encoding:gzip,deflate
1.2Web服務器通過響應中的Content-Encoding頭來通知web客戶端。
Content-Encoding:gzip
1.3 gzip是目前最流行和最有效的壓縮方法 。有很多瀏覽器支持gzip卻不支持deflate。
2.壓縮什麽
2.1實際上,值的壓縮的內容包括XML和JSON在內的任何文本響應。
2.2圖片和PDF不應該壓縮。為什麽?因為本來已經被壓縮了,試圖壓縮只會浪費CPU資源,還有可能增大文件大小。
2.3壓縮的成本--1.服務器端花費CPU來完成壓縮2.客戶端對壓縮文件進行解壓縮
2.4經驗:通常對大於1KB或2KB的文件進行壓縮。
2.5壓縮通常能將響應的數據量減少將近70%
3.配置
3.1為什麽僅僅介紹Apache?因為:Apache是Internet上最流行的WEB服務器。
3.2配置gzip使用的模塊取決於Apache的版本----Apache1.3使用mod_gzip,而Apache2.x使用mod-delfate。
3.3 很多Web主機服務都默認為text/html打開了mod_gizp。最重要的配置修改就是需要明確壓縮腳本和樣式表。
3.4Apache1.3--mod_gzip
- Apache 1.3的gzip壓縮由mod_gzip模塊提供。
- mod_gzip_on 啟用mod_gzip
- mod_gzip_item_include;mod_gizp_item_exclude
- gzip命令行提供了一個選項,用於控制壓縮的程度。
- mod_gzip提供了選項,可以將保存壓縮過的內容自動保存在磁盤上,並在原內容變化時更新壓縮過的內容。mod_gzip_can_negotiate和mod_gzip_update_static
3.5Apache2.x --mode_deflate
- 盡管模塊名字是這樣的,但是用gzip進行壓縮。 - mod_deflate包含了一個用於控制壓縮級別的指令--Deflate CompressionLevel
4代理緩存
4.1當瀏覽器通過代理來發送請求時,情況會變得很復雜。
- 解決方案:在Web服務器的響應中,添加Vary頭。--需要在服務器的Vary響應頭中包含Accept-Encoding 。 Vary:Accept-Encoding。
- 在默認情況下,mod_gzip會像所有響應添加Vary:Accept-Encoding頭,以驅使代理執行正確的操作。
5邊緣情形
5.1今天大約90%的通過瀏覽器進行的Internet通信都需要使用gzip。
5.2瀏覽器白名單方式:只為已經證實過支持壓縮的瀏覽器提供壓縮內容。例如:IE 6.0及以後版本、Mozilla 5.0及以後版本。
- 在Apache1.3中,使用User-Agent來指定瀏覽器白名單。
- 在Apache2.x中,使用BrowserMatch指令
- 最佳做法是將User-Agent作為代理的另一種評判標準,添加到Vary頭中。 Vary:Accept-Encoding,User-Agent
5.3 最好使用Cache-Control:private,為所有瀏覽器禁用代理緩存。→會增加帶寬開銷,因為代理無法緩存你的內容。
6平衡壓縮與代理支持的決定
6.1網站用戶很少,並且處於一個小圈子中。壓縮內容並使用Vary:Accept-Encoding。→減小組件大小、利用代理緩存
6.2更註意帶寬開銷--與上面的方法一樣。
6.3有大量的、多變的用戶群,並且能夠應付較高的帶寬開銷,並享有高質量的名聲。壓縮內容並使用Cache-Control:Private。→壓縮內容,禁用代理緩存,避免了邊緣情形。
7.壓縮通常能將內容壓縮約70%,但這會隨著空白及重復字符的數量而變化。
高性能網站建設-4壓縮組件