【问题标题】:How can I gzip images without using .htaccess?如何在不使用 .htaccess 的情况下压缩图像?
【发布时间】:2011-02-16 22:20:56
【问题描述】:

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"); 不起作用,请告诉我。

【问题讨论】:

  • 接受您之前提出的问题的最佳答案。即,通过奖励他们的代表,让人们知道您感谢他们所付出的努力。

标签: php apache gzip


【解决方案1】:

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

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

Yahoo performance rules 确认:

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

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

【讨论】:

  • 但如果您确实有一些较大的图像,则可能谨慎地对图像进行一些处理以限制分辨率和色彩空间,这会使图像本质上更小;下载后使用 css 缩小图像不会节省带宽。此外,为了节省连接,研究“css sprites”以将多个图像移动到一个下载中。
【解决方案2】:

通常,gzip 压缩 GIF、PNG 或 JPEG 图像不会产生超过百分之几的收益(事实上,“压缩”文件可能比原始文件大)。如果您真的想在纯 php 中执行此操作,请使用 mod_rewrite(或修改后的图像 URL)将 URL 重定向到 php 脚本。然后,像这样输出图像

<?php
header('Content-Type:image/png');
echo file_get_contents('img.php');

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

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    相关资源
    最近更新 更多