데브허브 | DEVHUB | Django - @cache_page() decorator for view caching!Django - @cache_page() decorator for view caching!
- Django의
@cache_page() 데코레이터는 지정된 시간 동안 렌더링된 전체 페이지를 캐시에 저장하여 웹 애플리케이션의 성능을 크게 향상시킵니다. 💾
- 주로 생성 비용이 높지만 변경이 적은 페이지, 트래픽이 많은 정적 콘텐츠, 안정적인 데이터를 가진 API 엔드포인트에 사용됩니다. 🚀
- 첫 요청 시 페이지를 생성하고 캐시한 후, 후속 요청에서는 캐시된 응답을 즉시 반환하여 응답 시간을 단축합니다. ⚡
- 캐싱을 사용하려면
settings.py 파일에 CACHES 설정을 통해 LocalMemCache, Memcached, Redis와 같은 캐시 백엔드를 구성해야 합니다. ⚙️
- 뷰 함수 위에
@cache_page(캐시_유지_시간_초) 데코레이터를 적용하여 캐싱을 활성화하며, 시간은 초 단위로 지정합니다. ⏱️
- URL 경로 매개변수가 있는 동적 URL의 경우, 각 고유한 URL에 대해 별도의 캐시 엔트리가 생성되어 개별적으로 캐시됩니다. 🗺️
- 페이지에 현재 시간이나 로그인한 사용자 정보와 같은 동적인 데이터가 포함된 경우, 캐싱으로 인해 오래된 정보가 표시될 수 있는 심각한 문제가 발생할 수 있습니다. ⚠️
- 사용자별 정보가 포함된 페이지의 경우,
@vary_on_cookie 데코레이터를 @cache_page()와 함께 사용하여 각 사용자의 세션 쿠키에 따라 별도의 캐시 엔트리를 생성해야 합니다. 🍪
- 전체 페이지 캐싱 외에도 템플릿 프래그먼트 캐싱이나 저수준 캐싱 도구를 사용하여 페이지의 특정 부분만 캐시하여 유연성을 높일 수 있습니다. 🧩
- API 응답의 경우
Authorization 헤더와 같은 특정 요청 헤더에 따라 캐싱을 제어하기 위해 @vary_on_headers 데코레이터를 사용할 수 있습니다. 📡