
저는 사용자들이 전체 커뮤니티가 볼 수 있도록 이미지를 게시하는 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 _save
Blob을 업로드하는 사용자 지정 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를 사용하는 경우 이 설정을 지정할 수 있어야 합니다.