On Nov 15, 11:56 pm, Hraban Luyat <[email protected]> wrote:
> It's been a while so my knowledge of all these things is a little
> rusty, but iirc mod_compress operates on static files. web.py is an
[...]
>
> In related news, what you probably want is a caching proxy. They can
> do everything you want, and more. Try Squid; the learning curve is
Ah, I see.
I don't think that I want to use a proxy, because the knowledge of
whether something should be compressed or not is in my application,
and I don't trust myself to adjust the squid settings properly...which
got me to thinking "Why not compress the output myself?" So, at the
bottom of the GET method on my page classes I try to compress the
output myself, in the code below.
Where I would normally return from a GET with:
return
render.generic(bodycontent,menu,header,footer,loginblock,stylesheet,bottomblock)
I now return with:
return
compreturn(render.generic(bodycontent,menu,header,footer,loginblock,stylesheet,bottomblock))
And here's compreturn:
def compreturn(cnt):
if web.ctx.environ.has_key('HTTP_ACCEPT_ENCODING') and
web.ctx.environ['HTTP_ACCEPT_ENCODING'].find('gzip')>-1:
scnt = str(cnt)
zcnt = cStringIO.StringIO()
zfile = gzip.GzipFile('','wb',9,zcnt)
zfile.write(scnt)
zfile.close()
zsize = len(zcnt.getvalue())
if len(scnt)>zsize:
web.header("Content-Encoding","gzip")
web.header("Content-Length",str(zsize))
return zcnt.getvalue()
else:
return cnt
else:
return cnt
Can anyone see any pitfalls here? Any ways to do this more
efficiently?
Thanks,
-Ken
--
You received this message because you are subscribed to the Google Groups
"web.py" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/webpy?hl=en.