« 继续发笑回到首页聊天 2005.07.19 »

July 19, 2005

静态 gzip 文件输出 ——在 PHP & Apache 环境下  

调整阅读文字: 铂 Platinum

一个月前看到 livid 的《关于本站的那些 .livid 结尾的文件》还觉得没什么用,现在终于开始有用得着这些东西的地方了。

gzip 压缩输出是个好东西,但自己网站的 100ip/天,用不上。想到正在改版的东西每天的 log 文件都有几百 MB 的时候,及时知道了 gzip 的静态输出是很有好处的。

生成有一个现成的函数 gzencode,直接把一个字符串 gzip 后存成一个 .pt(或者随便什么别的扩展名)的文件

<?PHP
$sHtml 
"Compress me";
$sCompressed gzencode($sHtml9);
file_put_contents("c.pt"$sCompressed);
?>

然后的要点是 livid 那篇文章里提到的那样,在 httpd.conf 里

AddEncoding x-gzip .pt
AddType text/html .pt

这样,就可以直接访问 c.pt 了,我随便找了个 20K 的文本文件压了一下,gzip 后 5K,就是说这个本应该 20K 的静态文件,在硬盘上的时候是 5K,在传输过程中也是 5K,在浏览器端解压成 20K,整个过程对用户来说和普通文件别无二致,只是在生成的时候多消耗轻微的 CPU。如此轻微的改动(多个 gzencode 及改两行 httpd.conf),就可以极大的节省带宽(节省普通 html 流量的大约 2/3)。

至于副作用,livid 说

不过这样也会带来一个小问题,有的浏览器不支持 Content-Encoding 为 gzip,比如 Mac OS X 上的 Internet Explorer

不过个人认为这种情况可以少的忽略不记了

Posted by Platinum at July 19, 2005 11:40 PM | Comments (0)