如果我在 CherryPy 中挂载一个静态目录,如下所示:
wwwroot_config = { '/':
{ 'tools.staticdir.on': True,
'tools.staticdir.dir': '/path/to/dir' } }
cherrypy.tree.mount(root, '/', config = wwwroot_config)
从该目录下载文件非常缓慢。
但是,如果我创建自己的 WSGI 应用程序...
self.wsgi_server = wsgiserver.CherryPyWSGIServer((self.bindaddress, self.port), self.download_file, numthreads = 1)
使用 self.download_file 包含,基本上:
return serve_file(theFile, "application/x-download", "attachment", os.path.basename(theFile), debug = True)
我的速度快了 4-5 倍。
但是,这种方式不够灵活,因为 serve_file 添加到请求的标头(例如范围标头和内容长度)不会在响应中返回 - 我必须自己做。
我能做些什么来让第一种方式更快吗?