Django | static 캐싱 무효화

지현·2021년 1월 17일
0
  • Cache : 자주 접근하는 데이터를 복사 해놓는 임시 저장소
  • Browser Cache : 서버 지연을 줄이기 위해 사용하는 웹 캐시의 일종
  • 개발 중 캐시 비우기 : CTRL + F5
  • 클라이언트 캐시 방지 : 버전 명시

브라우저 캐싱:
웹 페이지 구성요소(즉 이미지, CSS 파일 등)을 사용자의 PC에 저장했다가 그 페이지를 다시 방문 시 사용자 PC에 저장된 요소를 꺼내 보여줌으로써 속도를 빠르게 하고 트랙픽 절감 효과를 주는 기법
.

프로젝트를 진행하다 css/js파일이 수정후 배포하였을때 자동 새로고침이 되지 않을 때!!

from django import template
from time import time
from django.conf import settings
from django.templatetags.static import StaticNode

register = template.Library()


class FreshStaticNode(StaticNode):
    def url(self, context):
        url = super().url(context)
        if settings.DEBUG:
            url += '?_={}'.format(int(time()))
        return url


@register.tag('fresh_static')
def do_static(parser, token):
    return FreshStaticNode.handle_token(parser, token)
  • 사용자가 강제적으로 브라우저의 캐시를 지워주지 않으면 배포후에 해당 파일들이 새로 고침이 되지 않는 현상이 발생한다.
  • 이런경우 하나의 팁이 파일의 경로 뒤에 ?_=20181128과 같은 쿼리 스트링을 적어 주면
  • 브라우저는 쿼리 스트링을 포함한 URL을 기준으로 캐시가 이루어지기 때문에 다른 파일로 인식이 된다.
  • 이것을 이용하여 브라우저에서 강제로 정적파일의 캐시를 다시 생성할 수 있게 된다.

출처: Askcompany 장고[기초편] - 27. 개발환경에서 static 캐싱 무효화하기

0개의 댓글