LiJell's 성장기

S3 Cache-Control 본문

Cloud

S3 Cache-Control

All_is_LiJell 2023. 10. 13. 11:03
반응형

max-age와 s-maxage는 HTTP Cache-Control 헤더에서 사용되는 지시어입니다. 이 지시어들은 리소스가 얼마 동안 캐시에 유지될 수 있는지를 초 단위로 지정합니다.

max-age

  • max-age 지시어는 브라우저와 같은 개인(프라이빗) 캐시에 적용됩니다.
  • 작동 방식: 이 지시어가 설정되면, 지정된 시간(초) 동안은 웹 서버에 새로운 요청을 보내지 않고 캐시에 저장된 데이터를 사용합니다.
  • 예시
    • max-age=3600은 브라우저가 해당 리소스를 1시간 동안 캐시해야 함을 의미합니다.

s-maxage

  • s-maxage 지시어는 공유(셰어드) 캐시에 적용됩니다. 예를 들어, CDN과 같은 중간 캐시가 여기에 해당합니다.
  • 작동 방식: s-maxage는 공유 캐시가 해당 리소스를 얼마나 오랫동안 캐싱해야 하는지 지정합니다.
  • 예시
    • s-maxage=2592000은 공유 캐시(CDN 등)가 해당 리소스를 약 1개월 동안 캐시해야 함을 의미합니다.
    • 둘 다 사용할 경우
      • max-age와 s-maxage가 동시에 존재할 경우, s-maxage는 공유 캐시에, max-age는 개인 캐시에 적용됩니다. 예를 들어, Cache-Control: max-age=3600, s-maxage=2592000 설정은 브라우저가 리소스를 1시간 동안 캐시하고, CDN이 리소스를 1개월 동안 캐시하도록 지시합니다.

적용 방법

  • 기존에 존재하는 object 대상
    • s3에서 object를 선택 >> action >> edit metadata >> s-maxage,max-age 설정
      • 여러 object를 한번에 수정할 경우 aws cli를 이용하세요.
      aws s3 cp s3://your-bucket/ s3://your-bucket/ --recursive --metadata-directive REPLACE --cache-control "s-maxage=xxxx"
  • 업로드 function에 적용
    • AWS SDK를 이용하시면 putObject 옵션에서 Cache-Control value를 설정해주시면 됩니다.
  • s3 sync 사용시
    • 아래 이미지와 같은 방법으로 적용이 가능하며, 여러번 나눠서 진행 할 경우 중요도순으로 하는걸 추천드립니다.
    • 아래 존재하는 options--delete--metadata-directive REPLACE 옵션을 용도에 따라서 잘 사용하면 좋습니다.
      • 소스와 버킷에 모두 존재하는 파일들: --metadata-directive REPLACE 덕분에 메타데이터가 교체됩니다.
      • 소스에만 존재하는 파일들: 이러한 파일들은 목적지로 복사되며, 메타데이터는 --metadata-directive REPLACE에 따라 설정됩니다.
      • 버킷에만 존재하는 파일들: 이러한 파일들은 --delete 덕분에 삭제됩니다. 즉, 소스와 목적지를 동기화하면서 목적지에 있는 복사된 또는 기존 파일의 메타데이터를 교체하려면 --metadata-directive REPLACE--delete를 모두 사용하면 그 목적을 달성할 수 있고, 이 두 옵션은 서로 충돌하지 않습니다.
aws s3 sync ./ s3://${s3_web_bucket} --no-progress --delete --exclude "*" --include "*.html" --metadata-directive REPLACE --cache-control max-age=0,s-maxage=31536000
반응형

'Cloud' 카테고리의 다른 글

ECS EC2 Spot instance scaling 속도 개선 방법  (2) 2023.12.29
EC2 Auto Scaling Multiple Launch Templates  (0) 2023.12.29
ECS Speeding up deployments  (0) 2023.08.17
AWS Lambda@Edge  (0) 2023.08.06
웹 애플리케이션 서비스 개요  (0) 2023.08.06
Comments