HTML Seite komprimiert mit gzip versenden?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

hallo,
mein Forum ist fast fertig.
Nun möchte ich die erzeugten HTML Seiten mit Gzip versenden.
(wird sich kaum lohnen, einfach aus neugier)

Ich hab schon eine Vorstellung wie ich das mit dem Modul Gzip hinbekomme aber wie prüfe ich, ob der Client auch mit Gzip klarkommt?
bzw wie komme ich an HTTP_ACCEPT_ENCODING?


MfG
Andreas
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das wird doch in den HTTP Request Headern verschickt (oder nicht, hängt vom Browser ab).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

THX habs schon gefunden!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Würd mich interessieren ob du das zum laufen bekommst.. :?:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Ok, hier ein erster Test. Nur um zu sehen wie das ganze funktioniert.
html kommt bei mir direkt von der Template Klasse...

Code: Alles auswählen

#!d:/Program Files/Python24/python.exe -u
#-*- coding: Latin-1 -*-"

import cgitb; cgitb.enable()           
import cgi, os, gzip

html = file("viewtopic.html", 'r')
encodings = os.environ['HTTP_ACCEPT_ENCODING'].split(",")

# muss hier noch abklären ob schreibweise "gzip" verbindlich.
# evtl auch Gzip oder GZIP möglich.
# lässt sich aber leicht mit str methoden umgehen...
if "gzip" in encodings:
    zip_data = gzip.GzipFile(filename="test.gzip", mode='wb')
    test = html.read()
    zip_data.write(test)
    zip_data.close()
    html.close()

    print "Content-Type: text/html"
    print "Content-Encoding: gzip"
    print 
    send = open("test.gzip", 'rb')
    print send.read()

else:
    print "Content-Type: text/html"    
    print
    print "Ohne Gzip"
    print html.read()
Antworten