[python] Django REST framework에서의 캐싱 처리 방법

Web 애플리케이션을 개발할 때 성능을 향상시키기 위해 캐싱이 많이 사용됩니다. Django REST framework에서도 캐싱을 효율적으로 처리할 수 있는 여러가지 방법이 있습니다. 이번 글에서는 Django REST framework에서의 캐싱 처리 방법에 대해 알아보겠습니다.

1. 캐싱 미들웨어 사용하기

Django에서는 캐싱 처리를 위해 CacheMiddleware라는 미들웨어를 제공합니다. 이 미들웨어를 사용하면 간단하게 페이지 전체를 캐시할 수 있습니다.

MIDDLEWARE = [
    ...
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    ...
]

위와 같이 MIDDLEWARE 설정에 UpdateCacheMiddlewareFetchFromCacheMiddleware를 추가하면, 요청에 대한 응답이 캐시에 저장되고, 이후 동일한 요청이 들어오면 캐시된 응답이 반환됩니다.

2. Django의 캐싱 기능 사용하기

Django는 캐싱을 위한 cache 모듈을 제공합니다. 이를 활용하여 Django REST framework에서 캐싱 처리를 할 수 있습니다.

from django.core.cache import cache

# 캐시 조회
cached_data = cache.get('key')

# 캐시 저장
cache.set('key', value, timeout)

위의 코드 예시에서는 cache를 임포트하여 캐시 조회와 저장을 할 수 있습니다. get 메소드로 캐시된 데이터를 조회하고, set 메소드로 새로운 데이터를 캐시에 저장할 수 있습니다. timeout 매개변수로 캐시 데이터의 유효 기간을 설정할 수 있습니다.

3. Django REST framework의 @cache_page 데코레이터 사용하기

Django REST framework는 캐싱을 위한 @cache_page 데코레이터를 제공합니다. 이를 사용하면 함수 뷰 또는 클래스 기반 뷰에 캐싱을 적용할 수 있습니다.

from rest_framework.decorators import cache_page

@cache_page(60 * 15)  # 15분 동안 캐시를 유지
def my_view(request):
    ...

위의 예시에서는 my_view 함수에 @cache_page 데코레이터를 적용하여 15분 동안 캐싱을 유지합니다.

마무리

이번 글에서는 Django REST framework에서의 캐싱 처리 방법에 대해 알아보았습니다. Django의 CacheMiddleware를 사용하거나 cache 모듈을 활용하여 캐싱을 처리할 수 있으며, REST framework에서 제공하는 @cache_page 데코레이터를 사용하여 캐싱을 적용할 수도 있습니다. 적절한 캐싱 처리를 통해 애플리케이션의 성능을 향상시킬 수 있습니다.


참고 자료