Questa è una vecchia domanda, ma è ancora al primo posto in Google per me, quindi suppongo che una risposta appropriata potrebbe essere utile a qualcuno accanto a me.
La soluzione risulta essere molto semplice. nel do_GET(), do_POST, ecc, è sufficiente aggiungere il seguente:
content = self.gzipencode(strcontent)
...your other headers, etc...
self.send_header("Content-length", str(len(str(content))))
self.send_header("Content-Encoding", "gzip")
self.end_headers()
self.wfile.write(content)
self.wfile.flush()
strcontent essere il contenuto effettivo (come in HTML, JavaScript o altre risorse HTML) e il gzipencode:
def gzipencode(self, content):
import StringIO
import gzip
out = StringIO.StringIO()
f = gzip.GzipFile(fileobj=out, mode='w', compresslevel=5)
f.write(content)
f.close()
return out.getvalue()
Vedi sì modi di seguito – SoloPilot