簡體   English   中英

如何啟用 gzip?

[英]How to enable gzip?

我找到了一些關於如何啟用 gzip 的教程,但似乎沒有什么對我有用,所以我的問題是如何啟用 gzip。 我在一個共享的 Dreamhost 托管服務器上,它運行 PHP 5.2 版和 Apache,從我找到這一行的 php 信息中,也許這可以幫助?

zlib

ZLib Support    enabled
Stream Wrapper support  compress.zlib://
Stream Filter support   zlib.inflate, zlib.deflate
Compiled Version    1.2.3.3
Linked Version  1.2.3.3

Directive   Local Value Master Value
zlib.output_compression Off Off
zlib.output_compression_level   -1  -1
zlib.output_handler no value    no value

我也找到了這條線

_SERVER["HTTP_ACCEPT_ENCODING"] gzip, deflate

我不知道這是否與它有關。 但這是我的第一個問題,其次,我有保管箱,托管一個 javscript 文件,我想知道是否可以將該文件 gzip 壓縮,它沒有被壓縮傳輸,所以有什么辦法嗎?

你試過ob_gzhandler嗎?

<?php ob_start("ob_gzhandler"); ?>
<html>
  <body>
    <p>This should be a compressed page.</p>
  </html>
<body>

作為替代方案,使用 Apache Web 服務器,您可以將DEFLATE 輸出過濾器添加到頂級服務器配置或.htaccess文件中:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml \
        text/css application/x-javascript application/javascript
</IfModule>

提示:有時檢測 Web 服務器是否正在發送壓縮內容非常棘手。 這個在線工具可以幫助解決這個問題。

在我的 Web 瀏覽器中使用開發人員工具,我測試了一個壓縮和不壓縮的 PHP 文件以比較大小。 就我而言,差異是 1 MB(未壓縮)和 56 KB 壓縮。

為了在 Apache 級別啟用編碼,我所要做的就是

zlib.output_compression = 1 // the PHP.ini file

這將使服務器進行必要的請求標頭檢查、壓縮、發送相關標頭

您也可以在ob_start()之前的 PHP 文件中執行此操作

ini_set("zlib.output_compression", 1);

並讓 Apache 壓縮靜態資源(例如:.js 文件、.css 文件),就像Kamlesh在他的回答中所做的那樣

在 Dreamhost 的官方 wiki 中,他們通過修改 htaccess 來啟用此功能:

<IfModule mod_gzip.c>
    mod_gzip_on       Yes
    mod_gzip_dechunk  Yes
    mod_gzip_item_include file      \.(html?|txt|css|js|php|pl|jpg|png|gif)$
    mod_gzip_item_include handler   ^cgi-script$
    mod_gzip_item_include mime      ^text/.*
    mod_gzip_item_include mime      ^application/x-javascript.*
    mod_gzip_item_exclude mime      ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>

這基本上檢查是否找到了 mod_czip.c,如果找到了,它將為您壓縮文件,以便更快地將它們發送到瀏覽器。 據說這將下載時間加快了 35-40%,然后文件大小應該下降到 55-65%。

通過在 Google 上快速搜索,您可以在 Stackoverflow 上找到另一個線程,並在第三方站點中解決此問題。

在 Apache 中,啟用輸出壓縮相當簡單。 將以下內容添加到您的 .htaccess 文件中:

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

# Or, compress certain file types by extension:
<files *.html>
SetOutputFilter DEFLATE
</files>

來源: http ://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/

## 首先,您必須更改 WHM(服務器)設置以啟用 Gzip。 之后更改 cPanel 設置##

  1. 對於 WHM 設置 => Easy Apache => 詳盡的選項列表 < 這里啟用 -放氣標簽 >

  2. 對於 cPanel 設置 => 軟件/服務 => 優化網站 < 在這里選擇你想要的選項 >

壓縮可以通過兩種方式完成。

Apache 實際上有兩個壓縮選項:

  • mod_deflate更容易設置並且是標准的。
  • mod_gzip似乎更強大:您可以預壓縮內容。

Deflate 快速且有效,所以我使用它; 如果它能讓你的船漂浮,請使用 mod_gzip。 無論哪種情況,Apache 都會檢查瀏覽器是否發送了“Accept-encoding”標頭並返回文件的壓縮版本或常規版本。 但是,一些較舊的瀏覽器可能會遇到問題(更多內容見下文),您可以添加一些特殊指令來糾正此問題。

如果您無法更改 .htaccess 文件,則可以使用 PHP 返回壓縮內容。 為您的 HTML 文件添加一個 .php 擴展名並將此代碼添加到頂部:

在 PHP 中:

 <?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start(“ob_gzhandler”); else ob_start(); ?>

我們檢查“Accept-encoding”標頭並返回文件的壓縮版本(否則為常規版本)。 這幾乎就像構建自己的網絡服務器(多么有趣!)。 但實際上,如果您能提供幫助,請嘗試使用 Apache 來壓縮您的輸出。 您不想胡亂處理您的文件。

參考: http ://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM