私はpython -m SimpleHTTPServer
を使ってウェブブラウザでローカルテストのためのディレクトリを提供しています。一部のコンテンツには大きなデータファイルが含まれています。私はそれらをgzipして、SimpleHTTPServerにContent-Encoding:gzipを提供するようにしたいと思います。コンテンツエンコーディングの使い方:gzip with Python SimpleHTTPServer
これを行う簡単な方法はありますか?
私はpython -m SimpleHTTPServer
を使ってウェブブラウザでローカルテストのためのディレクトリを提供しています。一部のコンテンツには大きなデータファイルが含まれています。私はそれらをgzipして、SimpleHTTPServerにContent-Encoding:gzipを提供するようにしたいと思います。コンテンツエンコーディングの使い方:gzip with Python SimpleHTTPServer
これを行う簡単な方法はありますか?
SimpleHTTPServerのdocumentationから見ると、方法はありません。しかし、私はlighttpd with the mod_compress moduleをお勧めします。
これは古い質問ですが、Googleではまだ1位ですから、私のそばにいる人には適切な答えがあると思います。
解決策は非常に簡単であることが判明しました。 do_GET()、do_POSTなどで、あなただけの次の行を追加する必要があります。
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はあなたの実際のコンテンツであること(HTML、のようにjavascriptや他のHTMLリソース) と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()
velis以下の方法は、あなたがどこかに、完全に機能コードがありますか? –
もちろん、上のコードはそのコードのまっすぐなコピーペーストでした。しかしもう一度、上記のスニペットはすべてのことを言っており、完全なコードはJSONブリッジとしても機能し、この疑問の母親をやや曖昧にするでしょう。とにかく、情報やコードが必要な場合は、私にメールを送ってください。 – velis
ありがとう - ちょうどあなたのラインを落とした。 –
これはグーグルのトップの結果だったので、gzipが動作するようにスクリプトに単純な変更を投稿すると思いました。上記@velis答えに
ビル、ここで私はそれを行う方法です。 g小さなデータを圧縮することは時間がかかりませんし、サイズを大きくすることができます。 Dalvikクライアントでテスト済みです。
def do_GET(self):
... get content
self.send_response(returnCode) # 200, 401, etc
...your other headers, etc...
if len(content) > 100: # don't bother compressing small data
if 'accept-encoding' in self.headers: # case insensitive
if 'gzip' in self.headers['accept-encoding']:
content = gzipencode(content) # gzipencode defined above in @velis answer
self.send_header('content-encoding', 'gzip')
self.send_header('content-length', len(content))
self.end_headers() # send a blank line
self.wfile.write(content)
他にも多くの人々が、私はpython -m SimpleHTTPServer
をローカルテストに使用しています。これはまだGoogle上で最高の結果であり、https://github.com/ksmith97/GzipSimpleHTTPServerは素晴らしい解決策ですが、要求されていなくてもgzipを強制し、有効/無効にするフラグはありません。
私はこれをサポートする小さなツールを書くことにしました。それは行くなので、通常のインストール手順は単純です:
go get github.com/rhardih/serve
すでに$GOPATH
が$PATH
に追加されている場合、それはあなたが必要とするすべてです。今すぐあなたはコマンドとしてserve
を持っています。
を参照してくださいはい – SoloPilot