
私は Django の Web サイトを運営しており、そこではユーザーが画像を投稿してコミュニティ全体に公開しています (9gag のようなものです)。
画像の保存と提供には Azure ストレージを使用しています。Web サーバーは nginx リバース プロキシ + gunicorn カクテルです。私の Web サイトでは Gzip が稼働しています。さらに、静的アセットをキャッシュするために、nginx conf ファイルに次の内容を含めています。
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { root /home/mhb11/project/myproject; expires 24h; add_header Vary Accept-Encoding; access_log off; }
問題は、Google Page Speed プラグインを使用して Web サイトをテストすると、Azure ストレージから提供される画像がどれもキャッシュされていないというメッセージが表示されることです。
これらに対してキャッシュを有効にするにはどうすればいいでしょうか? アドバイスをお願いします。私はこの分野にかなり不慣れなので、この段階でのどんな助言でも大いに役立ちます。よろしくお願いします。良い週末をお過ごしください。
以下は、def _save
BLOB をアップロードするカスタム ストレージ クラスのメソッドです。
def _save(self,name,content):
blob_service = BlobService(account_name=accountName, account_key=accountKey)
import mimetypes
small_content = content
content.open()
content_type = None
if hasattr(content.file, 'content_type'):
content_type = content.file.content_type
else:
content_type = mimetypes.guess_type(name)[0]
content_str = content.read()
blob_service.put_blob(
'pictures',
name,
content_str,
x_ms_blob_type='BlockBlob',
x_ms_blob_content_type=content_type
)
その中で Cache-Control を設定するにはどうすればよいでしょうか?
答え1
Azure Storage/blob で「Cache-Control」メタタグ情報を設定する必要があります。
私は AWS を使用しており、そこで特定のアセット (画像) にアクセスしてその情報を指定できます。
また、何らかの API を使用してアプリケーションから画像をアップロードする場合は、この設定を指定できるはずです。