Moin Moin!
Ich möchte auf meinem selbst geschriebenen Http Server etwas Bandbreite sparen und dazu bestimmte Dateien komprimiert ausliefern.
Dir ist klar, dass Du bei dynamischen Inhalten Bandbreite gegen CPU-Zeit tauschst? Bei statischen Inhalten hast Du die wahl, entweder Inhalte unkomprimiert vorzuhalten und bei Bedarf zu komprimieren, oder Inhalte komprimiert vorzuhalten und bei Bedarf zu dekomprimieren, oder Inhalte komprimiert und unkomprimiert vorzuhalten. Hier tauschst Du wieder Bandbreite gegen CPU-Zeit oder Speicherplatz.
Mein Server spricht übrigens http 1.0.
Warum nicht 1.1?
Ich bitte um Kommentare, ob das so richtig ist, und ob es sonst noch was zu beachten gibt:
Prüfen ob die Gegenseite komprimierte inhalte versteht:
im Header suchen, ob bei 'Accept-Encoding' gzip zu finden ist.Im Response Header 'Content-Encoding: gzip' mit angeben.
dann einfach die komprimierte Datei senden.
So in der Art.
Dich könnte übrigens auch gzip_cnc interessieren, auch wenn es darum geht, Sicherheitslücken zu vermeiden.
außerdem stellt sich mir die Frage, kann ich in einem JavaScript irgendwie abfragen, ob der Browser komprimierte Inhalte versteht, um darauf irgendwie reagieren zu können?
Wenn Du Javascript im Browser meinst: Nein, und wozu auch? Das handeln Browser und Server untereinander aus, Javascript hat damit nichts zu tun. Du kannst ja nicht einmal erwarten, dass der Browser etwas mit Javascript anfangen kann, darf oder will. (Seltenes) serverseitiges Javascript könnte sich natürlich die Request-Header ansehen und für entsprechende Response-Header und ggf. für eine entsprechende (De)komprimierung sorgen.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".