• gzencodeはデフォルトでZLIB_ENCODING_GZIPエンコーディングを使用し、gzip圧縮形式を使用します。実際にはdefalteアルゴリズムを使用してデータを圧縮し、ファイルヘッダーとadler32を追加します。チェック
•gzdeflate はデフォルトで ZLIB_ENCODING_RAW エンコーディング方式を使用し、deflate データ圧縮アルゴリズムを使用します。実際には、最初に LZ77 で圧縮され、次にハフマンコーディングで圧縮されます
。
•gzcompress; ZLIB_ENCODING_DEFLATE エンコードは、zlib 圧縮形式を使用してデフォルトで使用され、実際には deflate を使用してデータを圧縮し、zlib ヘッダーと CRC チェックを追加します。
パフォーマンスの観点から: deflate は gzip や zlib よりも優れています
圧縮後のテキスト ファイルのデフォルトの圧縮率の次元から判断すると、deflate は zlib よりも優れており、gzip よりも優れています
これら 2 つのアルゴリズムは、グラフィック形式の png と同様に、deflate アルゴリズムを使用します。
deflate アルゴリズムは、LZ77 アルゴリズムとハフマン コーディングの両方を使用する可逆データ圧縮アルゴリズムです。
これはもともと Phil Katz によって彼の PKZIP アーカイブ ツールのバージョン 2 用に定義され、その後 RFC 1951 仕様として定義されました。
PHP の圧縮実装は、deflate、zlib、および gzip 圧縮メソッドを提供する関数ライブラリである zlib に依存しています。
今回使用した上記3つの関数は、パラメータのエンコードを同じ値に変換し、圧縮率を同じ値に設定すれば、最終的には同じ関数が呼び出され、効果やパフォーマンスは同じになります。
PHP は 3 つの定数を定義します。
コードをコピーします コードは次のとおりです:
#define PHP_ZLIB_ENCODING_RAW -0xf //deflate -15
#define PHP_ZLIB_ENCODING_GZIP 0x1f //gzip 15 + 16
#define PHP_ZLIB_ENCODING_DEFLATE 0x0f // zlib 15
3 つの関数の呼び出しプロセス中に他のアルゴリズムを使用するエンコーディングを直接指定できます:
コードをコピーします
コードは次のとおりです:
zlib: ZLIB_ENCODING_DEFLATE
gzip: ZLIB_ENCODING_GZIP
収縮: ZLIB_ENCODING_RAW
これら 3 つの関数は、3 つのアルゴリズムの単純な呼び出しメソッドであり、より適切な名前が付けられています。 3 つの関数は同じエンコーディングを指定することで同じ効果を得ることができ、PHP では汎用圧縮関数として zlib_encode 関数も提供しています。
参考:
http://shouce.jb51.net/gzip/rfc-deflate.html
http://www.gzip.org/zlib/rfc-deflate.html
興味があるかもしれない記事: