Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GZIP CSS完全破坏了页面_Css_.htaccess_Compression_Gzip_Zlib - Fatal编程技术网

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]
这也很好。


问题
  • css压缩工作需要定义/指定什么?我觉得我只是错过了一些转换的东西…

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

  • 这会在文件大小方面有任何进一步的优势,还是我应该坚持手动服务的版本,并给出一个关于Google PageSpeed的**?
    (GIDZipTest仍然显示“如果”的场景,即使是缩小的文件,这是令人印象深刻的数字。我希望如此……)

  • 提前感谢您的评论。
    您诚挚的


    Marian

    PHP+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