정적 자산에 대한 nginx 캐싱 문제 해결

정적 자산에 대한 nginx 캐싱 문제 해결

저는 사용자들이 전체 커뮤니티가 볼 수 있도록 이미지를 게시하는 Django 웹사이트를 운영하고 있습니다(9gag와 유사).

Azure Storage를 사용하여 이미지를 저장하고 제공합니다. 웹 서버는 nginx 역방향 프록시 + gunicorn 칵테일입니다. 내 웹사이트에서 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 ​​플러그인을 사용하여 웹 사이트를 테스트할 때 Azure 저장소에서 제공되는 이미지가 캐시되지 않는다는 메시지를 받는다는 것입니다. 여기에 이미지 설명을 입력하세요

이에 대한 캐싱을 활성화하려면 어떻게 해야 합니까? 조언해주세요. 저는 이 분야에 아주 익숙하지 않기 때문에 이 단계에서 도움을 주면 큰 도움이 될 것입니다. 미리 감사드리며, 즐거운 주말 보내세요.


def _saveBlob을 업로드하는 사용자 지정 Storage 클래스의 메서드 는 다음과 같습니다 .

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를 사용하는 경우 이 설정을 지정할 수 있어야 합니다.

관련 정보