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.


Reply via email to