如何在不使用.htaccess的情况下gzip图像?

时间:2011-02-16 22:20:57

标签: php apache gzip

Godaddy不会为我启用mod_gzip,所以我必须使用这样的标题:

<?php 
ob_start ("ob_gzhandler");
header("Content-type: text/css; charset: UTF-8");
header("Cache-Control: must-revalidate");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
$offset = 60 * 60 * 24 * 7;
$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
gmdate("D, d M Y H:i:s",
time() + $offset) . " GMT";
header($ExpStr);
?>

在这种情况下,那将是CSS文件

无论如何,我如何在我的图片中使用它?我的意思是,制作图像:image.php并将该代码放在顶部但使用header("Content-type: image/png; charset: UTF-8");不起作用,请告诉我。

2 个答案:

答案 0 :(得分:8)

GZipping图像不值得。收缩是微不足道的甚至是负面的,因为图像格式已经完成了非常优化的压缩工作。尝试压缩JPG文件以查看我的意思。

此外,压缩难以压缩的数据非常处理器密集型,您最终可能会使用更多资源而不是更少。

Yahoo performance rules确认了这一点:

  

图像和PDF文件不应该被压缩,因为它们已经被压缩了。试图对它们进行gzip不仅会浪费CPU,还可能会增加文件大小。

另外,请记住,在PHP中进行压缩时,每次请求进入时都会启动一个PHP进程。最好不要压缩静态资源(除非你为流量付出了很多钱)。压缩通常应该是Web服务器的工作,而不是PHP的工作。

答案 1 :(得分:2)

通常,gzipping GIF,PNG或JPEG图像不会产生超过百分之几的增益(实际上,“压缩”文件可能比原始文件大)。如果你真的想在普通的php中做到这一点,使用mod_rewrite(或修改过的图像URL)将URL重定向到php脚本。然后,输出像

这样的图像
<?php
header('Content-Type:image/png');
echo file_get_contents('img.php');

工作(在您的实验中,您可能无意中将空格添加到二进制PNG图像中,从而破坏了它。)