a. Use a full blown webserver like apache or nginx and configure it to gzip
content on client request
b. Use a simple wsgi gzipping filter.

For b. there is a simple and fast enough filter in wsgitools package.  You
can use it in anyserver.py or any place when calling the wsgi application
as:

from wsgitools.filters import WSGIFilterMiddleware, GzipWSGIFilter
# filter web2py wsgi application
wsgiapp = WSGIFilterMiddleware(gluon.main.wsgibase, GzipWSGIFilter)





2013/4/22 Derek <[email protected]>

> Unless you are using IE lower than 5.5, all clients support gzip. Looks
> like 'Rocket' doesn't though. You could modify the 'write' on line 1758 to
> gzip files though. Just have to set the content-length and content-encoding
> yourself. You could add in a check to see if it's supported...
>
> if 'gzip' in environ.get('HTTP_ACCEPT_ENCODING', ''):
> #(if the http accept-encoding specifies gzip...) gzip it.
>
> here's how i do it with wsgi middleware, but it should work here with
> rocket... of course, it wouldn't work if you were using gevent to serve (as
> an example). You could just plug in a middleware though. I took this from
> the pylons 
> tutorial<http://pylonsbook.com/en/1.1/the-web-server-gateway-interface-wsgi.html#altering-the-response>
> ...
>
> buffer = StringIO.StringIO()
>         output = gzip.GzipFile(
>             mode='wb',
>             compresslevel=self.compresslevel,
>             fileobj=buffer
>         )
> I set compresslevel to 5, you could set it lower if you prefer speed to
> filesize, that's up to you. I did find that I got the most size benefit
> from compressing large json returns (like tables). However, I just set it
> to compress everything except images, it seems to work great.
>
>
> On Sunday, April 21, 2013 2:16:17 PM UTC-7, Ricardo Pedroso wrote:
>
>> You can not "blindly" gzip your data unless you control the clients.
>>
>> It's the client that tells if it can accept gzip content or not,
>> and the web server will choose to gzip it or not.
>>
>> I will advice you to let this to the web server.
>>
>> But if you really want to gzip yourself, than you should take care of the
>> request headers, specifically the Accept-Encoding one, ex:
>>
>> Accept-Encoding: gzip, deflate
>>
>> than if you gzip you should tell the client about it in the response
>> headers with:
>>
>> Content-Encoding: gzip
>>
>>
>> http://en.wikipedia.org/wiki/**HTTP_compression<http://en.wikipedia.org/wiki/HTTP_compression>
>>
>> Ricardo
>>
>>
>> On Sun, Apr 21, 2013 at 9:59 PM, Vincent <[email protected]> wrote:
>> > Hi,
>> >
>> > I want to return gzipped json content (although the json part is not
>> really
>> > important).
>> >
>> > I did some googling and found this post which is somewhat related,
>> > https://groups.google.com/d/**msg/web2py/cgSrsC73vzg/**ZNYN3u7ChVwJ<https://groups.google.com/d/msg/web2py/cgSrsC73vzg/ZNYN3u7ChVwJ>
>> > as far as I could tell the minify part of the question was answered but
>> not
>> > the gzipped part.
>> >
>> > I know some servers can compress, but I want to do the compression
>> inside
>> > web2py since my app may run on various server  configurations. My
>> objective
>> > is to serve experimental data through a RESTful service.
>> >
>> > Basically, I am wondering if something like "generic.json.gz" already
>> exists
>> > built-in to web2py. Something that returns the gzipped form of the json
>> of
>> > the response.
>> >
>> > Does this already exist somewhere or do I need to write it myself?
>> >
>> > --
>> >
>> > ---
>> > You received this message because you are subscribed to the Google
>> Groups
>> > "web2py-users" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> an
>> > email to web2py+un...@**googlegroups.com.
>> > For more options, visit 
>> > https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>.
>>
>> >
>> >
>>
>  --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to