GZIP CSS完全破坏了页面
谢谢你过来。我真的自己试过了,但又一次似乎太难处理了。GZIP CSS完全破坏了页面,css,.htaccess,compression,gzip,zlib,Css,.htaccess,Compression,Gzip,Zlib,谢谢你过来。我真的自己试过了,但又一次似乎太难处理了。 情况… 我在一个共享的主机上使用自己的网站进行直播。当我想要压缩大量cms生成的js和css以使PageSpeedInsights和我自己感到高兴时,我仔细阅读了它,最后发现我的主人既没有安装mod_gzip也没有安装mod_deflate。安装的是ZLIB。所以我找了。找到了典型的php追加解决方案,但不喜欢它。为htaccess找到了几行简洁的代码,这让我很高兴,因为它们马上就可以工作了: AddHandler application/
情况…
我在一个共享的主机上使用自己的网站进行直播。当我想要压缩大量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
我通过使用确认它工作正常。这一切都很好,我很喜欢。但当我将.css放入AddHandler列表时,我的页面就完全崩溃了。
我尝试只对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]
这也很好。问题
(GIDZipTest仍然显示“如果”的场景,即使是缩小的文件,这是令人印象深刻的数字。我希望如此……)
提前感谢您的评论。
您诚挚的
MarianPHP+zlib解决方案自动压缩Web服务器提供的每个PHP文件。这意味着您放入php处理程序的每个文件都将被压缩发送到客户端浏览器。不管怎样,AddHandler指令告诉Web服务器将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。您以压缩的方式交付内容,而不仅仅是为了传输,这将通过以下方式完成。因此,客户机在解释内容之前不会对其进行解压缩 您可以启用以允许自动:
选项多视图
因此,如果您遇到类似的问题,我建议您阅读并正确处理
使用创建一个php脚本(例如:“gzip css.php”)
并在其前面加上.htaccess
<FilesMatch "\.css$">
ForceType application/x-httpd-php
php_value auto_prepend_file "/full/path/to/that/file/see/link/above/gzip-css.php"
</FilesMatch>
ForceType应用程序/x-httpd-php
php_value auto_prepend_file“/full/path/to/that/file/see/link/over/gzip css.php”
添加到所有.css文件。到目前为止,这似乎是我唯一的解决办法。如果我没有在这里问我是否早一点找到了我的完整路径,我就可以正确地理解这一点。也许有人对如何将AddHandler版本与css tho结合起来还有更好的想法
不起作用的内容(完全禁用所有css):-将.css添加到AddHandler和上述(包括我的)任何解决方案中。
-为手动压缩的css文件提供服务,并预先添加内容类型脚本
-这两个老问题的结合,但我发现了一个.htaccess解决方案,它在不修改任何代码的情况下对我有效
AddHandler application/x-httpd-php .html .htm .php .js .css
<Files *.css>
Header set Content-type "text/css"
</Files>
php_flag zlib.output_compression On
php_value zlib.output_compression_level 5
AddHandler应用程序/x-httpd-php.html.htm.php.js.css
标题集内容类型“文本/css”
php_标志zlib.output_压缩打开
php_值zlib.output_压缩_级别5
尝试了这个。创建了一个文件“gzip css.php”,其中包含:
,然后在htaccess中使用php\u value auto\u prepend\u file gzip-css.php
对该文件进行预处理。以同样的方式破产。我很想放气,但是没有安装mod_deflate。或者我可以将deflate与zlib一起使用吗?如果是,怎么做?我已经尝试了AddOutputFilterByType DEFLATE text/css
,但什么也没有发生。我的意思是用初始php代码创建一个.css扩展名文件,而不使用任何额外的htaccess指令(请看这里:),而不是一个扩展名为.php的css文件,但这个解决方案可能无法正常工作。我知道没有安装mod_deflate,那么恐怕您没有太多选择。奇怪的是,在使用AddHandler压缩的css文件中添加内容类型头并没有起作用,尽管在同一脚本中使用ob_gzhandler会起作用。(见我自己的解决方案)谢谢你的建议!遗憾的是,仅仅将此添加到.htaccess中也不起作用,尽管它看起来很有希望;在zlib和手动服务的各种组合中尝试过。有什么命令需要注意吗?@Marian不,这应该按原样进行。也许您需要添加AddEncoding x-gzip.gz.tgz
。
<FilesMatch "\.css$">
ForceType application/x-httpd-php
php_value auto_prepend_file "/full/path/to/that/file/see/link/above/gzip-css.php"
</FilesMatch>
AddHandler application/x-httpd-php .html .htm .php .js .css
<Files *.css>
Header set Content-type "text/css"
</Files>
php_flag zlib.output_compression On
php_value zlib.output_compression_level 5