为什么GZip压缩不';不适用于.css和.js,但仅适用于.php文件扩展名

为什么GZip压缩不';不适用于.css和.js,但仅适用于.php文件扩展名,php,apache,compression,gzip,mod-deflate,Php,Apache,Compression,Gzip,Mod Deflate,在我们(更新的?迁移的)共享托管服务器上压缩文件时,会出现一个奇怪的问题 检查includes文件夹/\u inc/中内容完全相同的这两个相同文件(php代码),以便从各种源cdd文件中收集、缩小和生成单个gzip css文件。现在,以php结尾的文件似乎得到了很好的压缩,但是以扩展名css和js结尾的文件还没有得到压缩 (24kbyte,扩展不允许自己被压缩) (5kbyte!扩展允许自己被压缩) 将扩展名从css更改为php会使文件如您所见进行压缩,但浏览器仍然更喜欢css扩展名以获得最佳缓

在我们(更新的?迁移的)共享托管服务器上压缩文件时,会出现一个奇怪的问题

检查includes文件夹
/\u inc/
中内容完全相同的这两个相同文件(php代码),以便从各种源cdd文件中收集、缩小和生成单个gzip css文件。现在,以php结尾的文件似乎得到了很好的压缩,但是以扩展名css和js结尾的文件还没有得到压缩

(24kbyte,扩展不允许自己被压缩)
(5kbyte!扩展允许自己被压缩)

将扩展名从css更改为php会使文件如您所见进行压缩,但浏览器仍然更喜欢css扩展名以获得最佳缓存

Q:为什么只有以php结尾的文件才被gzip处理,而以css和js扩展名结尾的php文件不被gzip处理?如何实现css和js扩展的gzip呢?如何将main.htacces或php.ini设置为Gzip all.php、.css、.js文件


/.htaccess(用于压缩的root.htaccess文件部分)


php.ini(来自运行PHP5.3.28的Apache服务器)


我错过什么了吗?您已经明确注释掉了配置中支持压缩的部分。现在,不再使用web服务器压缩PHP输出,而是让PHP来完成。此外,浏览器一点也不关心文件扩展名,也不会根据文件名更改缓存行为。亲爱的@Brad,谢谢你的明确评论。首先,评论过的apache规则似乎对打开或关闭都没有任何影响,结果是一样的,即只压缩php文件。第二句话:有趣!这就意味着我错了,.css和.js文件也可以被称为css.php和js.php,它的工作方式和缓存方式与原生的.css和.js文件相同??这是真的吗?我不知道为什么你的mod_deflate配置不起作用。但是,是的,当涉及到HTTP时,文件扩展名是没有意义的。对于内容类型,只有
内容类型
响应标题有意义。对于缓存,只有缓存头是有意义的,例如
缓存控制
过期
@Brad感谢您的新见解。。。是的,以前它一直工作到共享主机上的某个升级,然后压缩突然停止工作,只有在php.ini中添加行
zlib.output\u compression=on
和`zlib.output\u handler=ob\u gzhandler`,现在它才能再次对php文件工作。使所有文件都成为php的唯一问题是,我无法在apache上为它们设置过期时间。然后我必须在css和js文件中这样做,但是php头可能和普通apache头一样好用?头就是头。如果您输出一个带有缓存控制的响应头,不管它是来自PHP还是Apache。。。客户不知道也不关心。至于mod_deflate,我建议让Apache而不是PHP进行压缩。至少对于Nginx来说,web服务器进行压缩比让PHP进行压缩要快一些。然后,您可以更好地控制压缩内容。(例如,我有一个从PHP输出JPEG的情况。我不希望这些被压缩,因为这没有什么好处,而且CPU开销很大。)
## interpreted extensions as php
AddType application/x-httpd-php .php
AddType image/svg+xml svg svgz
AddEncoding gzip svgz
#AddType text/css css
#AddType text/javascript js

## compress speficic filetypes BUTTTT doesn't work anymore since server upgrade!
## with or without the code below the result is the same!
<IfModule mod_deflate.c>
<FilesMatch "\.(js|css|eot|ttf|svg|xml|php|txt)$">
    SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
AddType application/x-httpd-php-cgi .js .css
Action application/x-httpd-php-cgi /cgi-php/php-cgi
session.gc_maxlifetime = 1440
session.name = PHPSESSID
session.save_handler = files
session.serialize_handler = php
zlib.output_compression = On
zlib.output_handler = ob_gzhandler
allow_call_time_pass_reference = 
implicit_flush = Off