您現在的位置: 网站首頁 / 網站建設 / 正文

網頁如何開啓Gzip壓縮

作者: admin 发布: 2014-3-15 9:27:25 分类: 網站建設 閱讀: 次 查看評論

  gzip是GNUzip的縮寫,它是一個GNU自由軟件的文件壓縮程序。它是Jean-loupGailly和MarkAdler一起開發的。第一次公開發布版本是1992年10月31日發布的版本0.1,1993年2月發布了版本1.0。
  一、GZIP概念
  GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNⅨ系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。
  HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%.这样传输就快了,效果就是你点击网址后会很快的显示出来.当然这也会增加服务器的负载. 一般服务器中都安装有这个功能模块的。
  二、gzip 命令
  减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
  语法:gzip [选项] 压缩(解压缩)的文件名
  該命令的各選項含義如下:
  -c 将输出写到标准输出上,并保留原有文件。
  -d 将压缩文件解压。
  -l 对每个压缩文件,显示下列字段:
  壓縮文件的大小;未壓縮文件的大小;壓縮比;未壓縮文件的名字
  -r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
  -t 测试,检查压缩文件是否完整。
  -v 对每一个压缩和解压的文件,显示文件名和压缩比。
  -num 用指定的数字 num 调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),
  -9 或--best表示最慢压缩方法(高压缩比)。系统缺省值为 6。
  指令實例:
  gzip *
  % 把当前目录下的每个文件压缩成 .gz 文件。
  gzip -dv *
  % 把当前目录下每个压缩的文件解压,并列出详细的信息。
  gzip -l *
  % 详细显示例1中每个压缩的文件的信息,并不解压。
  gzip usr.tar
  % 压缩 tar备份文件usr.tar,此时压缩文件的扩展名为.tar.gz。
  三、快速啓動
  在WordPress中虽然有插件可以启动Gzip网页压缩,不过能通过几句语法来达到网页压缩,这样不是更好吗?其实在PHP中,有一句语法是可以开启Gzip的,只要加在网页输出的前端即可。在WordPress中,其实大部分的缓存插件都有内建启动Gzip壓縮功能,不论是老牌的缓存插件WP Super Cache、轻巧的1 Blog Cacher或是hyper Cache都可以启动Gzip网页压缩功能。如果你没有装这些插件,或是这些插件虽然启动了Gzip功能但是检测出来却没有压缩,那你可能需要通过插件GZippy来启动,不过通过这个插件来启动时,记得缓存插件本身的Gzip要关掉,否则可能造成冲突。
  第一步:打開IIS,啓用HTTP壓縮服務
  右击“网站”->“属性”,选择“服务”。在“HTTP压缩”框中选中“压缩应用程序文件”和“ 压缩静态文件”,按需要设置“临时目录”和“临时目录的最大限制”;
  第二步:啓用web服務
  第三步:修改MetaBase.xml
  开始 > 运行中输入 c:\windows\system32\inetsrv,找到 MeteBase.xml,先备份,再修改。(有的服务器不需要修改此文件便可以使用)
  ⅡS或Apache啓用GZIP壓縮優化網站
  先来了解一下GZIP,gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式。软件的作者是Jean-loupGailly和Mark Adler。1992年10月31日第一次公开发布,版本号是0.1,目前的稳定版本是1.2.4。
  gzip可以極大的加速網站.有時壓縮比率高達80%,近來測試了一下,最少都有40%以上,還是相當不錯的.在Apache2之後的版本,模塊名不叫gzip,而叫mod_deflate
  1、Apache啓用gzip
  如果要開啓gzip的話,一定要打開下面二個模塊.
  LoadModule headers_module modules/mod_headers. so
  LoadModule deflate_module modules/mod_deflate. so
  设置压缩比率,取值范围在 1(最低) 到 9(最高)之间,不建议设置太高,虽然有很高的压缩率,但是占用更多的CPU资源.
  DeflateCompressionLevel 3
  AddOutputFilter DEFLATE html xml php js css
  <Location />
  SetOutputFilter DEFLATE
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary
  SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
  SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
  Header append Vary User-Agent env=!dont-vary #对代理的设置
  </Location>
  下面二個測試網站
  測試數據對css
  Original Size: 44 KB
  Gzipped Size: 10 KB
  Data Savings: 77.27%
  測試數據js
  Original Size: 6 KB
  Gzipped Size: 2 KB
  Data Savings: 66.67%
  測試數據php
  Original Size: 62 KB
  Gzipped Size: 15 KB
  Data Savings: 75.81%
  上面只是隨機拿的幾個數據,看的出來,使用了gzip壓縮後文件小多了.
  另外講一下,有關squid對gzip的處理
  在squid中,對同一個URL只保留一份緩存。對于如果不同browser(是否支持壓縮)如果頻繁交替訪問,例如:對某個cache住的目標,一個http/1.0請求可能會導致squid強制更新其緩存。但接下來的另一個http/1.1請求又會導致squid再次更新緩存。這樣那squid緩存數據就要頻繁更新,這就極大的降低了cache命中率。
  不過還好,現實環境中不支持壓縮的browser畢竟是很少的情況,所以對于緩存命中率的降低很有限.
  這個神通廣大的模塊就是mod_gzip.它通過用和gzip一樣的壓縮算法對apache發出的頁面進行壓縮,可能的話可以把頁面壓縮成爲原來大小的十份之一。哪,如果10K的頁面只要傳1K這不就是提速10倍嘛。當然一般網頁只可以達到3-6倍。那也很不錯。對吧。連google這樣一個大的網站都采用這個技術。你還不快跟上?
  這樣一個好東東,來來來,我告訴你如何安裝:分3步,1、下載,2、修改配置,3、測試。
  安裝,配置
  把mod_gzip放到你的apache的源代码目录下,新建一个mod_gzip目录如果需要补丁(针对1.3.17. la版) 还需运行:
  patch mod_gizp.c
  按你需要,在配置中选择动态DSO或静态编译进apache系统。如何处理在README中讲得很清楚,如-add-module=mod_gzip.c,make,make install等等。这里不多讲。
  把下列配置加入httpd.conf尾部。
  # MOD_GZIP configuration
  mod_gzip_on Yes
  mod_gzip_minimum_file_size 1002
  mod_gzip_maximum_file_size 0
  mod_gzip_maximum_inmem_size 60000
  mod_gzip_item_include mime "application/x-httpd-php"
  mod_gzip_item_include mime text/*
  mod_gzip_item_include mime "httpd/unix-directory"
  mod_gzip_dechunk Yes
  mod_gzip_temp_dir "/tmp"
  mod_gzip_keep_workfiles No
  mod_gzip_item_include file ".php3$"
  mod_gzip_item_include file ".txt$"
  mod_gzip_item_include file ".html$"
  mod_gzip_item_exclude file ".css$"
  mod_gzip_item_exclude file ".js$"
  在保存修改後運行
  …/bin/apachectl configtest确保配置修改无误。
  然后用apachectl restart 指令重起服务。
  修改,測試
  在宣布做好了之前在測試一下是優秀程序員的習慣。爲了盡量不影響你的用戶的浏覽,我們可以用把新的apache驅動在8080端口上或者用指令控制mod_gzip起作用的目錄,而不是一下子全用mod_gzip.
  用法如下:
  MOD_GZIP configuration
  沒有問題後你就可以讓你的用戶很開心的發現’XX網站現在好快哦。’
  Mod_gzip真的很神奇,100K的HTML大 文档只要12K就可以传到用户端了。越先采用这个技术你的用户对你的网站的高速度印象就越深。不过有所得必有所失,由于解压是在客户端进行的,效果和用户 的浏览器有一定关系。
  2、ⅡS啓用gzip
  現代的浏覽器IE6和Firefox都支持客戶端Gzip,也就是說,在服務器上的網頁,傳輸之前,先使用Gzip壓縮再傳輸給客戶端,客戶端接收之後由浏覽器解壓顯示,這樣雖然稍微占用了一些服務器和客戶端的CPU,但是換來的是更高的帶寬利用率。對于純文本來講,壓縮率是相當可觀的。如果每個用戶節約50%的帶寬,那麽你租用來的那點帶寬就可以服務多一倍的客戶了。
  ⅡS6已經內建了Gzip壓縮的支持,可惜,沒有設置更好的管理界面。所以要打開這個選項,還要費些功夫。
  在服務器中新建一個文件夾,名稱任意,給本機用戶添加寫入權限。
  进入IIS管理器,IIS管理器>网站 右键进入“属性”面板,切换到“服务”选项卡,勾选HTTP压缩中两项,如果仅仅想压缩静态文件,那么第一项就算了。临时目录就是刚才新建的那个文件夹。
  確認後進入IIS管理器>Web服務擴展,點擊“添加一個新的Web服務擴展”,在彈出的面板中首先輸入擴展名,名稱任意;然後在“要求的文件”中添加文件,其實就是輸入gzip.dll所在的路徑。如果不是特立獨行的服務器,那麽這個位置基本上就是“C:WINDOWSsystem32inetsrvgzip.dll”,確認後記得將“設置擴展狀態爲允許”勾選。
  進入C:WINDOWSsystem32inetsrv這個目錄下,找到一個叫MetaBase.xml的文件,直接修改保存是不行的,因爲IIS服務正在使用該文件。強烈建議先備份該文件,再在一個副本上修改。用文本編輯器打開副本,用查找功能找到“IIsCompressionScheme”,共有3處,都在一起,分別是deflate、gzip和Parameters,deflate也是一種壓縮格式,不過性能上不如gzip。需要修改的是deflate和gzip這兩段,參數基本一樣,都要修改。
  HcDynamicCompressionLevel是用来设置压缩率,默认是0,最高是10。低压缩级别生成稍大一些的压缩文件,但对 CPU 和内存资源的总体影响较小。高压缩级别通常会生成较小的压缩文件,但会占用较多的 CPU 时间和内存。有人说设置成9性价比最高。
  HcFileExtensions是用來設置壓縮的靜態文件擴展名,默認是htm、html、txt,根據網站的自身情況添加擴展名,最基本的是js、css。添加時注意原有的換行格式。
  HcScriptFileExtensions是用来设置压缩的动态文件扩展名,默认是asp、dll和exe,根据需要自行添加扩展名,无外乎aspx、php等。可以将这一项的默认删除留空,这样所有的动态响应都以压缩方式发送。另外,还将动态压缩 HcFileExtensions 中所有未指定的静态文件类型,并且因此不将它们放入缓存。同样地,必须将 HcDoDynamicCompression 设置为 true,以进行动态压缩。
  把IIS服務停止,用剛才保存的副本替換原有的MetaBase.xml
  重啓IIS服務,如果一切正確,那麽Gzip就啓動了。
  可以在這個地址檢測Gzip的工作情況。
  置文件在windows目錄下的system32/inetsrv/metabase.xml
  找到"/LM/W3SVC/Filters/Compression/deflate"和Location ="/LM/W3SVC/Filters/Compression/gzip"
  兩個配置段內均有HcDynamicCompressionLevel="5",請選擇你認爲合適的數值,這裏我設置的是5.
  如果要對動態網頁進行壓縮,則要修改如下配置項
  HcScriptFileExtensions="asp
  dll
  exe"
  將你要壓縮的文件的擴展名填進去就可以了。
  特別提示:這種壓縮優化流量的方法,對于文本文件比較有效,大約能壓縮50%(我一個200k左右的頁面包含js和css壓縮後118k左右),圖片則效果很差。另外壓縮比高對于服務器來說也會導致cpu負載過高,所以建議不要設置太高的壓縮比。
  修改配置文件時請暫停IIS服務,保存後重新啓動服務即可。
  用Nginx的gzip模塊提升網站訪問效率
  Nginx自帶的有gzip模塊,這個模塊支持在線實時壓縮輸出數據流。經過良好的配置優化,可以大幅的提升網站的輸出效率。
  效果顯而易見。
  四、指令
  [#gzip gzip] [#gzip_buffers gzip_buffers] [#gzip_comp_level gzip_comp_level] [#gzip_min_length gzip_min_length] [#gzip_http_version gzip_http_version] [#gzip_proxied gzip_proxied] [#gzip_types gzip_types]
  五、指令詳解
  gzip
  语法:gzip on|off
  默认值:gzip off
  作用域:http,server,location,if (x) location
  開啓或者關閉gzip模塊
  gzip_buffers
  语法:gzip_buffers number size
  默认值:gzip_buffers 4 4k/8k
  作用域:http,server,location
  设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。例如 4 4k 代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。4 8k 代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。
  如果沒有設置,默認值是申請跟原始數據相同大小的內存空間去存儲gzip壓縮結果。
  gzip_comp_level
  语法:gzip_comp_level 1..9
  默认值:gzip_comp_level 1
  作用域:http,server,location
  gzip压缩比,1 压缩比最小处理速度最快,9 压缩比最大但处理最慢(传输快但比较消耗cpu)。
  gzip_min_length
  语法:gzip_min_length length
  默认值:gzip_min_length 0
  作用域:http,server,location
  設置允許壓縮的頁面最小字節數,頁面字節數從header頭中的Content-Length中進行獲取。
  默認值是0,不管頁面多大都壓縮。
  建议设置成大于1k的字节数,小于1k可能会越压越大。即: gzip_min_length 1024
  gzip_http_version
  语法:gzip_http_version 1.0|1.1
  默认值:gzip_http_version 1.1
  作用域:http,server,location
  識別http的協議版本。由于早期的一些浏覽器或者http客戶端,可能不支持gzip自解壓,用戶就會看到亂碼,所以做一些判斷還是有必要的。注:21世紀都來了,現在除了類似于百度的蜘蛛之類的東西不支持自解壓,99.99%的浏覽器基本上都支持gzip解壓了,所以可以不用設這個值,保持系統默認即可。
  gzip_proxied
  语法:gzip_proxied [off|expired|no-cache|no-store|private|no_last_modified|no_etag|auth|any] ...
  默认值:gzip_proxied off
  作用域:http,server,location
  Nginx作为反向代理的时候启用,开启或者关闭后端服务器返回的结果,匹配的前提是后端服务器必须要返回包含"Via"的 header头。
  off - 关闭所有的代理结果数据的压缩 expired - 启用压缩,如果header头中包含 "Expires" 头信息 no-cache - 启用压缩,如果header头中包含 "Cache-Control:no-cache" 头信息 no-store - 启用压缩,如果header头中包含 "Cache-Control:no-store" 头信息 private - 启用压缩,如果header头中包含 "Cache-Control:private" 头信息 no_last_modified - 启用压缩,如果header头中不包含 "Last-Modified" 头信息 no_etag - 启用压缩,如果header头中不包含 "ETag" 头信息 auth - 启用压缩,如果header头中包含 "Authorization" 头信息 any - 无条件启用压缩
  gzip_types
  语法:gzip_types mime-type [mime-type ...]
  默认值:gzip_types text/html
  作用域:http,server,location
  匹配MIME類型進行壓縮,(無論是否指定)"text/html"類型總是會被壓縮的。
  注意:如果作为http server来使用,主配置文件中要包含文件类型配置文件
  http{ include conf/mime.types; ......}
  如果你希望壓縮常規的文件類型,可以寫成這個樣子
  http {
  include conf/mime.types;
  gzip on;: gzip_min_length 1000;
  gzip_buffers 4 8k; : gzip_http_version 1.1;
  gzip_types text/plain application/x-javascript text/css text/html application/xml;
  ......
  }

  來源:SEO搜尋引擎優化 - SEO自學網 轉載注明出處!

? 上一篇下一篇 ?   本文關鍵詞: Gzip壓縮  

評論列表:

站長SEO學院
第一節:百度搜索引擎工作原理
第二節:建設對搜索引擎友好的站點
第三節:如何進行網站內容建設
第四節:整體優化、結構優化、網頁優化
第五節:移動搜索-明確移動搜索優化標准
百度SEO資料文檔
百度搜索引擎優化指南2.0
百度移動搜索優化指南2.0
網站分析白皮書(站長版)
移動站點該如何優化
建設對百度友好的站點
百度搜索引擎網頁質量白皮書
石榴算法-綠蘿算法-冰桶算法
新搜索時代下的優化策略
更多百度SEO資料文檔
站長推薦
DIV+CSS布局實例教程-Web標准
网站SEO優化常见问题汇总
SEO優化推广方案该如何写
SEO優化方案步骤
影響網站關鍵詞排名因素總結
影響谷歌搜索引擎排名的因素調查
手機移動端站點適配優化
最近發表