CGI-Compress-Gzip

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

        if there is one open.

CAVEATS
  Apache::Registry

    Under Apache::Registry, global variables may not go out of scope in
    time. This may causes timing bugs, since this module makes use of the
    DESTROY() method. To avoid this issue, make sure your CGI object is
    stored in a scoped variable.

       # BROKEN CODE
       use CGI::Compress::Gzip;
       $q = CGI::Compress::Gzip->new;
       print $q->header;
       print "Hello, world\n";
   
       # WORKAROUND CODE
       use CGI::Compress::Gzip;
       do {
         my $q = CGI::Compress::Gzip->new;
         print $q->header;
         print "Hello, world\n";
       }

  Filehandles

    This module works by changing the default filehandle. It does not change
    STDOUT at all. As a consequence, your programs should call `print'
    without a filehandle argument.

       # BROKEN CODE
       use CGI::Compress::Gzip;
       my $q = CGI::Compress::Gzip->new;
       print STDOUT $q->header;
       print STDOUT "Hello, world\n";
   
       # WORKAROUND CODE
       use CGI::Compress::Gzip;
       my $q = CGI::Compress::Gzip->new;
       print $q->header;
       print "Hello, world\n";

    Future versions may steal away STDOUT and replace it with the
    compression filehandle, but that seemed too risky for this version.

  Header Munging

    When sending compressed output, the HTTP headers must remain
    uncompressed. So, this module goes to great effort to keep the headers
    and body separate. That has led to CGI::header() emulation code that is
    a little brittle. Most potential problems arise because STDOUT gets
    tweaked as soon as header() is called.

    If you use the CGI.pm header() API as specified in CGI.pm, then all
    should go well. But if you do anything unusual, this module may break.
    For example:

       # BROKEN CODE
       use CGI::Compress::Gzip;
       my $q = CGI::Compress::Gzip->new;
       print "Set-Cookie: foo=bar\n" . $q->header;
       print "Hello, world\n";

       # WORKAROUND 1 (preferred)
       use CGI::Compress::Gzip;
       my $q = CGI::Compress::Gzip->new;
       print $q->header("-Set_Cookie" => "foo=bar");
       print "Hello, world\n";

       # WORKAROUND 2
       use CGI::Compress::Gzip;
       my $q = CGI::Compress::Gzip->new;
       print "Set-Cookie: foo=bar\n";
       print $q->header;
       print "Hello, world\n";

    Future versions could try to parse the header to look for its end rather
    than insisting that the printed version match the version returned by
    header(). Patches would be very welcome.

SEE ALSO
    CGI::Compress::Gzip depends on CGI and IO::Zlib. Similar functionality
    is available from mod_gzip, Apache::Compress or Apache::GzipChain,
    however all of those require changes to the webserver configuration.

AUTHOR
    Chris Dolan

    This module was originally developed by me at Clotho Advanced Media Inc.
    Now I maintain it in my spare time.

ACKNOWLEDGMENTS
    Clotho greatly appreciates the assistance and feedback the community has
    extended to help refine this module.

    Thanks to Rhesa Rozendaal who noticed the -Type omission in v0.17.

    Thanks to Laga Mahesa who did some Windows testing and experimentation.

    Thanks to Slaven Rezic who 1) found several header handling bugs, 2)
    discovered the Apache::Registry and Filehandle caveats, 3) provided a
    patch incorporated into v0.17, and 4) persisted with smoke tests that
    reproduced the envvar problem fixed in v0.23.

    Thanks to Jan Willamowius who found a header handling bug.

    Thanks to Andreas J. Koenig and brian d foy for module naming advice.

HELP WANTED
    If you like this module, please help by testing on Windows or in a
    `FastCGI' environment, since I have neither available for easy testing.

    Personally, I don't use this module much anymore as all of my work is on
    Catalyst and mod_perl now.



( run in 0.542 second using v1.01-cache-2.11-cpan-39bf76dae61 )