次のように、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 が要求に追加するヘッダー (範囲ヘッダーやコンテンツの長さなど) が応答で返されないためです。自分でやらなければなりません。
最初の方法をより速くするためにできることはありますか?