静的アセットの nginx キャッシュのトラブルシューティング

静的アセットの nginx キャッシュのトラブルシューティング

私は 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 _saveBLOB をアップロードするカスタム ストレージ クラスのメソッドです。

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 を使用してアプリケーションから画像をアップロードする場合は、この設定を指定できるはずです。

関連情報