Re: gzip-based html compression
| From: | Teodor Cimpoesu | Date: | Wed, 28 Jun 2000 19:09:40 +0000 |
| Subject: | Re: gzip-based html compression | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-3644@lists.php.net to get a copy of this message | ||
Hi Sebastian!
On Wed, 28 Jun 2000, Sebastian Bergmann wrote:
> "GZip-Encoding". Packing speed is about 200-500 Kb/sec on
> Pentium-200. The unpacking takes virtually no time. It works on both
> Apache and MS IIS."
>
> I understand that the "major" browsers (Netscape Navigator (Mozilla?),
> MS Internet Explorer, ...) support the transport of gzip-compressed HTML
> pages through HTTP.
> Sadly I was not able to find information on this standard on w3.org.
There was once a post on php3 mailing list about it, ans since then I am
using it on my server. For static pages it's just a simple mod_rewrite trick.
Check for accepted gzip encoding and rewrite the link to the .html.gz file.
This is highly efficient for big html files (w/ lots of tables and formatting.)
> I'd like to write, if possible, a small library in PHP that sends the
> output of PHP scripts gzip-compressed, if the visitor's browser supports
> this.
Gzip compressing support exists for some time (just add --with-zlib when configuring),
but for string compressing just from a recent date (iirc).
So you may be able to use the trick for dynamic content too.
You may enable output buffering from php.ini for all files and add
an append file like:
[gzip.php]
$html = gzcompress(ob_get_contents());
ob_end_clean();
header ("Content-Type: text/html");
header ("Content-Encoding: x-gzip");
print ($html);
ob_end_flush();
*BUT*, unfortunately, PHP's content header is stubborned enough to
get in our way every time. First time, you cannot get rid of it
(I did filed a bug-rep) second, it insists to be the last one sent,
so the "encoding" won't be seen :(
e.g.
HTTP/1.1 200 OK
Date: Wed, 28 Jun 2000 19:06:19 GMT
Server: Apache/1.3.12 (Unix) PHP/4.0.1
X-Powered-By: PHP/4.0.1
Content-Encoding: x-gzip
Connection: close
Content-Type: text/html
<gzip-content-here>
I'm just staring myself at mod_php4.c but I dunno what to change
anyway :)
-- teodor