css - GZIP CSS 完全破坏页面

标签 css .htaccess compression gzip zlib

感谢您的光临。我真的自己尝试过这个,但再一次,我似乎无法处理。

情况...


我在共享主机上使用自己的网站。当我想要压缩我大量的 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]

这也很好用。


问题!


  1. 要使 css 压缩工作,我需要定义/指定什么?我觉得我只是缺少一些转换的东西...

  2. 当我向客户端提供手动缩小的 .css.gz 文件时,它们是否仍会被额外压缩?

  3. 这会在文件大小方面有任何进一步的优势,还是我应该坚持使用手动服务的版本并对 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/

相关文章:

image - 在matlab中将图像分割成像素 block 的错误

html - 查找 XPATH 表达式

html - 使用 HTML5 和 CSS 创建多个背景并保持标记语义的最佳方法是什么?

.htaccess - 如果浏览器不支持 gzip 会怎样?

apache - 无法上传 ssl 私钥解析

compression - logrotate 压缩格式

css - 使用 span item 缩小字体

css - 为什么嵌套的第 n 个类型选择器不起作用?

apache - 使用 .htaccess 从子域提供根域内容

compression - 如何使用 FFmpeg 将灰度视频流编码为 MPEG-1?