私の場合、概要ページに表示されるドキュメントのサムネイルを含むデータベースがあります。ブラウザがサイトにアクセスするたびに、すべてのサムネイル画像が再度ダウンロードされるため、ダウンロード機能によってデータベースからすべての画像が再度読み込まれます。私はGAEで実行しているので、これは私のデータベースを駆動します-膨大な読み取り。
次の設定でクライアントサイトのキャッシュを有効にしようとしました。
@auth.requires_login()
def download():
response.headers['Cache-Control'] = None
response.headers['Pragma'] = None
response.headers['Expires'] = None
return response.download(request, db)
また、response.streamが役立つかもしれないことも読みましたが、web2pyの本には次のように書かれています。
上記のように、response.downloadは、アップロードフィールドを介して保存されたファイルを取得するために使用する必要があります。response.streamは、コントローラーによって作成された一時ファイルやStringIOオブジェクトを返すなど、他の場合に使用できます。
- 編集 -
クライアント側のキャッシュを有効にしました:
session.forget() #important
expire_time = datetime.timedelta(days=2)
response.headers['Cache-Control'] = 'private, max-age%d'%(60*60*24*2)
response.headers['Pragma'] = None
response.headers['Expires'] = (request.utcnow + expire_time).strftime("%a, %d %b %Y %H:%M:%S GMT")
response.headers['Content-Disposition'] = \
'attachment;filename=' + filename + ';'
return response.stream(stream, filename=filename)