利用 .HTACCESS 啓用 GZIP 壓縮靜態內容

爲了優化網站的訪問速度,咱們能夠經過對靜態內容進行壓縮,從而減小網頁加載的時間,大大節省用戶的帶寬。在這篇文章中,我將介紹如何使用Apache和.htaccess文件進行靜態內容壓縮。javascript

首先讓我介紹一下,咱們可使用兩種不一樣的方法壓縮內容:GZipdeflatecss

介紹html

GZip方法在早期的apache版本中使用(在Apache 1.3以前)。但在那以後apache引入了deflate方法,相比GZip並無太大的效果(但還是很是好的)。然而,GZip在apache 1.3以後再也不提供更多的支持。所以,你的Apache版本必須大於1.3,若是沒有,你必須升級到最新版本的Apache。java

在使用壓縮以前,你必須啓用apache的mod_deflate模塊。要啓用這個模塊,你只須要從httpd.conf文件去掉這個模塊行。apache

啓用這個模塊後,你的服務器準備好提供壓縮的內容。可是,服務器只有當它接收到來自客戶端的相應頭文件時,纔會建立壓縮內容。因此,如今你須要將下面的代碼放置到你網站的htaccess文件,才能通知服務器提供壓縮的內容。json

.HTACCESS代碼服務器

<ifmodule mod_deflate.c="">
  # force deflate for mangled headers
  # developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
  <ifmodule mod_setenvif.c="">
    <ifmodule mod_headers.c="">
      SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
      RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
    </ifmodule>
  </ifmodule>

  # HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
  <ifmodule filter_module="">
    FilterDeclare   COMPRESS
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/html
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/css
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/plain
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/x-component
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/javascript
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/json
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xhtml+xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/rss+xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/atom+xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/vnd.ms-fontobject
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $image/svg+xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/x-font-ttf
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $font/opentype
    FilterChain     COMPRESS
    FilterProtocol  COMPRESS  DEFLATE change=yes;byteranges=no
  </ifmodule>

  <ifmodule !mod_filter.c="">
    # Legacy versions of Apache
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
    AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml 
	AddOutputFilterByType DEFLATE application/atom+xml
    AddOutputFilterByType DEFLATE image/svg+xml application/vnd.ms-fontobject 
	AddOutputFilterByType DEFLATE application/x-font-ttf font/opentype
  </ifmodule>
</ifmodule>

將上面的代碼放置在你的htaccess文件以後,看看你網站的請求頭部。你能夠看到一個額外的頭「Accept-Encoding「。這意味着請求的客戶端可以處理給定的壓縮類型的內容,並將提供壓縮內容。app

Accept-Encoding:gzip,deflate,sdch

結果ide

看看下面的圖片,有多少被壓縮了。svg

從上面的圖片能夠看出,實際頁面大小707KB,使用壓縮後是401KB。所以,它最終會提升你的網站的性能。

結論

我強烈建議你把網站靜態內容作壓縮處理,由於沒有理由不這麼作,這是Web開發的一個最佳實踐。


原文連接OSChina.NET翻譯

相關文章
相關標籤/搜索