感谢您的光临。我真的自己尝试过这个,但再一次,我似乎无法处理。
情况...
我在共享主机上使用自己的网站。当我想要压缩我大量的 cms 生成的 js 和 css 以使 PageSpeedInsights 和我自己开心时,我仔细阅读并最终发现我的托管商既没有安装 mod_gzip 也没有安装 mod_deflate 强>。安装的是ZLIB。所以我搜索了。找到典型的 php 附加解决方案但不喜欢它。为 htaccess 找到了几行简洁的代码,这让我很高兴,因为它们立即起作用:
AddHandler application/x-httpd-php .html .htm .php .js
php_flag output_buffering On
php_value output_handler ob_gzhandler
php_flag zlib.output_compression Off
我通过使用 GIDZipTest 确认它正在工作.这一切都很好,我喜欢它。
但是一旦我将 .css 放入 AddHandler 列表,我的页面就完全崩溃了。
我尝试使用php solution with ob_gzhandler仅适用于 css 文件,但最终根本无法正常工作。什么都不做。
解决方法? (不是真的)
我手动缩小了所有的 css 并上传了每个文件的 css.gz 版本,用
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
这也很好用。
问题!
- 要使 css 压缩工作,我需要定义/指定什么?我觉得我只是缺少一些转换的东西...
- 当我向客户端提供手动缩小的 .css.gz 文件时,它们是否仍会被额外压缩?
- 这会在文件大小方面有任何进一步的优势,还是我应该坚持使用手动服务的版本并对 Google PageSpeed 给出 **?
(GIDZipTest 仍然显示“如果”场景,即使对于缩小的文件,老实说,这是令人印象深刻的数字。我想要这样...)
预先感谢您提出的任何意见。
此致
玛丽安
最佳答案
PHP+zlib 解决方案自动压缩网络服务器提供的每个 PHP 文件。这意味着您放入 php 处理程序中的每个文件都将被压缩发送到客户端浏览器。无论如何,AddHandler 指令告诉网络服务器将 css 文件作为 php 脚本处理,这就是我认为它们“损坏”的原因。 Css 文件应该有自己的处理程序 (text/css)。
另一个(未测试)解决方案可能是保留您最初定义的处理程序:
AddHandler application/x-httpd-php .html .htm .php .js .css
并在您的 css 文件顶部添加此 php 代码:
<?php header('Content-Type: text/css'); ?>
但我不确定这是否可行。这应该告诉浏览器他们实际上正在接收 css 文件。
在这些情况下,最好的解决方案是您提到的 mod_deflate。
关于css - GZIP CSS 完全破坏页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12331110/