CGI que devuelve contenido comprimido.
Chema Cortés
py en ch3m4.org
Jue Dic 2 10:08:32 CET 2004
El Miércoles, 1 de Diciembre de 2004 23:28, Pepe Aracil escribió:
> Hola.
>
> Estoy acabando una aplicación web, y hay una parte de ella que retorna una
> lista bastante larga de una sola vez.
>
> Me he fijado en que practicamente todos los navegadores incluyen en la
> petición esta cabecera:
>
> Accept-Encoding: x-gzip, x-deflate, gzip, deflate
>
> ¿Esto quiere decir que aceptan contenido comprimido con gzip?
Efectívamente. El "deflate" te indica que también acepta "zip". Hay algunos
navegadores (eg: lynx) que también aceptan "compress".
> Si es así,¿ como debo retornar el contenido comprimido ?
Envía la cabecera "Content-Encoding: gzip" y el archivo comprimido (en
binario) como cuerpo ("body"). Para no tener que crear ficheros temporales,
combina gzip.GzipFile con cStringIO:
def compressBuf(s):
zbuf=cStringIO.StringIO()
zfile=gzip.GzipFile(mode='wb', fileobj=zbuf, compresslevel=9)
zfile.write(s)
zfile.close()
return zbuf.getvalue()
body=make_a_the_body()
if not "gzip" in os.environ["HTTP_ACCEPT_ENCODING"]:
print "Content-Type: text/html"
print
print body
else:
print "Content-Type: text/html"
print "Content-Encoding: gzip"
print "Content-Length: %d"%len(zBuf)
print
print compressBuf(zBuf),
> Si se puede comprimir me supondría un gran ahorro en ancho de banda, porque
> he comprimido a mano el listado y este se queda en un 20% de su tamaño
> original.
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: application/pgp-signature
Size: 189 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20041202/9d31a737/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es