私は学習目的でHTTPライブラリを使わずにPythonでHTTPサーバを作成しています。今は静的ファイルをうまく処理できます。PythonのTCPソケットを使ってgzip圧縮データを送信する
私はファイルを提供方法は、コードのこの作品を通じてです:
with open(self.filename, 'rb') as f:
src = f.read()
socket.sendall(src)
しかし、私は少し圧縮されたデータの代わりに、非圧縮を送信することにより、その性能を最適化したいです。それはヘッダに私に語ったので、私はそう
私のブラウザ(クローム)が圧縮されたデータを受け入れることAccept-Encoding: gzip, deflate, sdch
を知って、私はこの
with open(self.filename, 'rb') as f:
src = zlib.compress(f.read())
socket.sendall(src)
に私のコードを変更しかし、これは単なるゴミを出力します。私は間違って何をしていますか?
適切な 'Content-Encoding = gzip'ヘッダーを送信しましたか? –
はい、あります。私がGETリクエストで返すデータは、ヘッダーと2つのCRLFとそれに続く圧縮されたボディです。これはゴミを出力します。すべてを圧縮すると(これにはヘッダーが含まれます)、代わりにブラウザがファイルをダウンロードします。 – user5508097