Jas*_*ram 7 python gzip simplehttpserver
我正在使用python -m SimpleHTTPServerWeb浏览器中的本地测试目录.一些内容包括大数据文件.我希望能够对它们进行gzip,并让SimpleHTTPServer使用Content-Encoding:gzip为它们提供服务.
是否有捷径可寻?
这是一个古老的问题,但对我来说,它仍然在Google中排名第一,因此我认为正确的答案可能对我旁边的人有用。
结果证明非常简单。在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()
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
和其他许多人一样,我python -m SimpleHTTPServer也一直用于本地测试。这仍然是 google 上的最高结果,虽然https://github.com/ksmith97/GzipSimpleHTTPServer是一个很好的解决方案,但即使没有请求,它也会强制执行 gzip,并且没有标志来启用/禁用它。
我决定编写一个支持此功能的小型 cli 工具。一切顺利,所以常规安装过程很简单:
go get github.com/rhardih/serve
如果您已经$GOPATH添加到$PATH,那么这就是您所需要的。现在你有serve一个命令。
https://github.com/rhardih/serve