PHP:gzencode压缩级别

时间:2016-12-29 17:10:10

标签: php

根据PHP docsgzencode支持0-9的压缩级别。

我想知道是否有人想要压缩某些东西,尽可能压缩它是否有意义?你不是一直想把它设置为9吗?总是在最大程度上压缩是否有任何缺点?

1 个答案:

答案 0 :(得分:0)

这需要花费时间。压缩是一个占用大量CPU的过程, 压缩文件的时间越长,花费的时间就越长。因为 gzip提供了1到9 in的压缩级别范围 gzencode()功能。

1给出了最快的压缩速度,但压缩率较低,而9给出了最高的压缩率,但压缩率更低。

我试图在下面举一个例子来理解。

// Initialize all required variables
$data = file_get_contents(dirname(__FILE__) . '/data.txt'); // which is big file data around 1MB.
$smallstring = "This is small string.";                     // small string to compress 
$array = array(
    'Big data' => $data, 
    'Small data' => $smallstring,
);

// Calling gzencode() with various compression levels
foreach ($array as $key => $string){
    echo "{$key} :\t Size = ".strlen($string). "\n";
    echo "level\t\tMD5\t\t\t\t\tTime\t\n";
    for($i = -1; $i < 10; $i++) {
        $start_time = microtime(true); // store time before compress 
        $output     = gzencode($string, $i, FORCE_GZIP); // string wll compress here in diffrebnt level
        $end_time   = microtime(true); // store time after compress

        echo "$i\t".md5($output). "\t" . ($end_time - $start_time)."\tms\n";
    }
    echo "\n";
}

这将生成如下输出

Big data :   Size = 1380637
level       MD5                            Time 
-1  ad730951a0cde5a05e152f40d4f6fe4a    0.01400089263916    ms
0   c7d8e4e6a5dbd82a73128f83ee2fc633    0.0069999694824219  ms
1   84d2229ad05877d2d54b0282a6cca0bf    0.0070009231567383  ms
2   ccab12e8b54ccf9e656badf4817e4959    0.0069999694824219  ms
3   f35b1091dc56c82c58618acbc553bdd4    0.007000207901001   ms
4   e515e7db5b16602143fec52da223762f    0.012000799179077   ms
5   4da249e96fccc7483f68044443ae819a    0.012001037597656   ms
6   ad730951a0cde5a05e152f40d4f6fe4a    0.01200008392334    ms
7   ad730951a0cde5a05e152f40d4f6fe4a    0.012001037597656   ms
8   729ecc80e4dd83b81d22eb652e870378    0.012001037597656   ms
9   5dba04d7f529c897c908526553c2cbde    0.012001037597656   ms

Small data :     Size = 21
level       MD5                         Time    
-1  d7263212e7a0f6ca6bf44f2b31ffecdb    0   ms
0   7f8375c3cf1a8841e1c7b66be0f8690f    0   ms
1   bc5c0ee1059ec442789cdd4361501cb2    0   ms
2   d7263212e7a0f6ca6bf44f2b31ffecdb    0   ms
3   d7263212e7a0f6ca6bf44f2b31ffecdb    0   ms
4   d7263212e7a0f6ca6bf44f2b31ffecdb    0   ms
5   d7263212e7a0f6ca6bf44f2b31ffecdb    0   ms
6   d7263212e7a0f6ca6bf44f2b31ffecdb    0   ms
7   d7263212e7a0f6ca6bf44f2b31ffecdb    0   ms
8   d7263212e7a0f6ca6bf44f2b31ffecdb    0   ms
9   ea6f5c64dffa44254db7327289f9a248    0   ms

如您在上面的输出中看到的,使用相同的数据字符串,在不同的级别花费的时间不同。 但是,如您所见,当您使用小的数据时,所有级别的时间花费相同。

75%的网站以及几乎所有新旧浏览器和Web服务器都支持GZip。整个过程对用户是透明的,足够快的速度几乎可以在任何设备上运行,并且在某些情况下可以减少72%的资源。