Thanks everyone for your answers. I now have several options to choose from!
On Monday, April 22, 2013 1:56:47 PM UTC-5, Derek wrote: > > Option A is the best option, B is second best. I recommended a change in > Rocket since it's included in w2py (it would be a nice enhancement), and > since this is an internal site and Vincent may not be a webserver guy, that > may fit the bill more. > > On Monday, April 22, 2013 11:35:23 AM UTC-7, Michele Comitini wrote: >> >> 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.

