如何使用Content-Encoding:使用Python SimpleHTTPServer的gzip

Jas*_*ram 7 python gzip simplehttpserver

我正在使用python -m SimpleHTTPServerWeb浏览器中的本地测试目录.一些内容包括大数据文件.我希望能够对它们进行gzip,并让SimpleHTTPServer使用Content-Encoding:gzip为它们提供服务.

是否有捷径可寻?

Dea*_*ron 8

由于这是google的最高结果,我想我会将简单的修改发布到让gzip工作的脚本上.

https://github.com/ksmith97/GzipSimpleHTTPServer


vel*_*lis 6

这是一个古老的问题,但对我来说,它仍然在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)


rha*_*dih 5

和其他许多人一样,我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


小智 -1

从SimpleHTTPServer的文档来看,没有办法。不过,我推荐lighttpd 与 mod_compress 模块