没有mod_gzip、mod_deflate和预gzip文件的gzip


gzip without mod_gzip nor mod_deflate and pre gzipped files

我的托管公司不支持mod_gzip或mod_deflate。

我必须gzip.js和css文件

我已经预先压缩了这些文件。

我使用Joomla,为了向文档中添加脚本,每当用户接受编码时,我必须使用一个为.js.gz文件提供服务的PHP文件(PHP Joomla代码示例):

$document = &JFactory::getDocument();
    $document->addScript($jQueryPath);

我将下面的指令添加到.htaccess;然而,浏览器并没有解压缩.js.gz文件

# Add some gzip to the bunch
AddEncoding x-gzip .gz 
<FilesMatch '.js.gz$>
        ForceType text/javascript
        Header set Content-Encoding "gzip"
</FilesMatch>
<FilesMatch '.css.gz$>
        ForceType text/css
        Header set Content-Encoding "gzip"
</FilesMatch>
RewriteCond %{REQUEST_FILENAME} ^.+'.(js|css)$ [NC]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.+)$ $1.gz [L,QSA,NC,NS]

有人能帮助我们如何在所描述的条件下使用gzip吗?

谢谢你,

大多数php安装都带有Zlib扩展允许您操作gzip文件。

看看这些php手册页面,可以完成您所要求的:

http://www.php.net/manual/en/function.gzcompress.php
http://www.php.net/manual/en/function.gzdeflate.php
http://www.php.net/manual/en/function.gzencode.php

可以使用$_SERVER超全局检查Accept Encoding Header:

if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate'))
{
// DO STUFF HERE
}
elseif (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
{
// DO STUFF HERE
}