php – 禁用mod_deflate和mod_gzip压缩HTML,CSS和JS的最佳方法

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 禁用mod_deflate和mod_gzip压缩HTML,CSS和JS的最佳方法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我在运行apache 2的共享主机上有一些站点.我想压缩传递给浏览器的 HTML,CSS和 Javascript.主机已禁用Mod_deflate和mod_gzip,因此这些选项已经用完.不过我可以使用PHP 5,所以我可以使用gzip组件.

我目前将以下内容放在我的.htaccess文件中:

但是,这只会压缩html并省略CSS和JS.

有没有一种可靠的方法透明地压缩CSS和JS的输出而无需更改每一页?我搜索谷歌,并提出了一些解决方案,但我还没有找到合适的解决方案.如果有人可以提出他们知道可行的解决方案,那将非常感激地收到.

注意,The Definitive Post on Gzipping your CSS中的方法2看起来是一个很好的解决方案,但我无法使其正常工作.有没有其他人成功使用这种方法

对于延迟感到抱歉 – 这对我来说是忙碌的一周.

假设:

> .htaccess与comPress.PHP在同一个文件
>要压缩的静态文件位于静态子目录中

我通过在.htaccess中设置以下指令开始我的解决方案:

RewrITeEngine on
rewriterule ^static/.+\.(js|ico|gif|jpg|jPEg|png|css|swf)$comPRess.PHP [NC]

您的提供程序必须允许您覆盖.htaccess文件中的mod_rewrite选项.
然后compress.PHP文件本身可能如下所示:

<?PHP

$basedir = realpath( dirname($_SERVER['SCRIPT_FILENAME']) );
$file = realpath( $basedir . $_SERVER["REQUEST_URI"] );

if( !file_exists($file) && strpos($file,$basedir) === 0 ) {
    header("HTTP/1.0 404 Not Found");
    print "File does not exist.";
    exit();
}

$components = split('\.',basename($file));
$extension = strtolower( array_pop($components) );

switch($extension)
{
    case 'css':
        $mime = "text/css";
        break;
    default:
        $mime = "text/plain";
}

header( "Content-type: " . $mime );
reaDFile($file);

您当然应该在switch语句中添加更多MIME类型.我不想解决方案依赖于pecl fileinfo扩展或任何其他神奇的mime类型检测库 – 这是最简单方法.

至于保护脚本 – 我对文件系统中的真实路径进行了转换,因此没有黑客’../../../etc/passwd’或其他的shellcript文件路径不能通过.

那就是

$basedir = realpath( dirname($_SERVER['SCRIPT_FILENAME']) );
$file = realpath( $basedir . $_SERVER["REQUEST_URI"] );

片段.虽然我很确定除了$basedir之外的其他层次结构中的大多数路径都会在Apache到达脚本之前由Apache处理.

另外,我检查结果路径是否在脚本的目录树中.像pilif建议的那样添加缓存控制的标题,你应该有一个解决问题的工作方案.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 禁用mod_deflate和mod_gzip压缩HTML,CSS和JS的最佳方法全部内容,希望文章能够帮你解决php – 禁用mod_deflate和mod_gzip压缩HTML,CSS和JS的最佳方法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。