如何启用 gzip?

2022-08-30 13:20:14

我已经找到了一些关于如何启用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

我不知道这是否与它有关。但这是我的第一个问题,其次,我有dropbox,托管一个javscript文件,我想知道是否有可能让该文件gz压缩,它没有被传输压缩,所以有什么办法可以做到这一点吗?


答案 1

你试过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压缩。


答案 2

我所要做的就是在Apache级别启用编码

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

这将使服务器做必要的请求标头检查,压缩,发送相关标头

您也可以在 PHP 文件中执行此操作,然后再ob_start()

ini_set("zlib.output_compression", 1);

为了使Apache压缩静态资源(例如:.js文件,.css文件)就像Kamlesh在他的答案中所做的那样。


推荐