【问题标题】:PHP Enable Compressing GZIPPHP 启用压缩 GZIP
【发布时间】:2011-10-11 07:24:58
【问题描述】:

我收到了来自 google speed test 的这条消息:

使用 gzip 压缩以下资源可以将其传输大小减少 67.4KiB(减少 65%)。

Compressing http://localhost/english/jquery.js could save 57.9KiB (65% reduction).
Compressing http://localhost/english/javascript/slider.js could save 4.8KiB (71% reduction).
Compressing http://localhost/english/style/style.css could save 3.7KiB (72% reduction).
Compressing http://localhost/english/javascript/home.js could save 1.0KiB (64% reduction).

我该怎么办?

【问题讨论】:

    标签: php caching compression gzip


    【解决方案1】:

    在您的网络服务器的配置中,您应该启用将压缩发送到浏览器的文本 (css, js, html, ...) 内容的模块/扩展。

    通常,如果您使用的是 Apache 网络服务器,则必须启用和配置 mod_deflate


    作为旁注:您将在网络服务器配置中执行此操作 - 激活压缩与 PHP 几乎无关(CSS/JS 由运行 PHP 脚本的同一 Apache 服务器提供服务,但这就是所有共同点).

    【讨论】:

      【解决方案2】:

      将 mod_deflate 安装到您的服务器并启用它

      <IfModule mod_deflate.c>
      
      SetOutputFilter DEFLATE
      BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
      </IfModule>
      
      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 text/javascript
      AddOutputFilterByType DEFLATE application/x-javascript
      
      <Files *.html>
      SetOutputFilter DEFLATE
      </Files>
      
      <Files *.php>
      SetOutputFilter DEFLATE
      </Files>
      
      ExpiresActive On
      ExpiresDefault "access plus 4 weeks"
      ExpiresByType image/gif "modification plus 5 hours 3 minutes"
      ExpiresByType image/png "modification plus 5 hours 3 minutes"
      ExpiresByType image/jpg "modification plus 5 hours 3 minutes"
      ExpiresByType image/jpeg "modification plus 5 hours 3 minutes"
      

      【讨论】:

      • 如果加载了 mod_deflate 就会这样做
      • 我检查了 phpinfo() 并加载了 mod_deflate,但我复制了这段代码,谷歌速度测试仍然显示错误
      【解决方案3】:

      您可以在服务器上使用mod_deflate

      <IfModule mod_deflate.c>
          # compress by mime type
          AddOutputFilterByType DEFLATE text/plain
          AddOutputFilterByType DEFLATE text/html
      
          # compress certain file / file type
          <Files *.html>
              SetOutputFilter DEFLATE
          </Files>
      </IfModule>
      

      【讨论】:

      • 我想要 js/css 并且我试图从 html 更改为 js 并且它什么都不做:S
      • 你确定你的服务器上安装了 mod_deflate 吗?
      • 我应该在哪里检查? (我有 XAMPP),在 php.ini 上?
      • 在apache文件夹中找到httpd.conf(应该在/conf),找到LoadModules所在的段落,找到mod_deflate.so。如果已注释(在行首带有#),请取消注释。如果它甚至不存在,请添加 LoadModule deflate_module modules/mod_deflate.so(如果模块位于 apache 根文件夹中的 module 文件夹中)。重启apache。
      • 好的,我启用了:),谢谢。现在我需要放一个代码,你能帮我吗?我需要更改以编写 *.js 和 *.css 吗?我尝试放置 text/css 和 text/js 并放置