mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-26 11:33:59 +03:00
f9c67f04d4
* Remove trailing whitespace from lines * Remove trailing nad leading whitespace from files Allows for cleaner diffs in future changes. For editors that automatically clean up whitespace on save, will avoid unrelated line changes in diffs.
1.7 KiB
1.7 KiB
Caching
A certain woman had a very sharp conciousness but almost no memory ... She remembered enough to work, and she worked hard.
- Lydia Davis
Caching in REST Framework works well with the cache utilities provided in Django.
Using cache with apiview and viewsets
Django provides a method_decorator
to use
decorators with class based views. This can be used with
with other cache decorators such as cache_page
and
vary_on_cookie
.
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework import viewsets
class UserViewSet(viewsets.Viewset):
# Cache requested url for each user for 2 hours
@method_decorator(cache_page(60*60*2))
@method_decorator(vary_on_cookie)
def list(self, request, format=None):
content = {
'user_feed': request.user.get_user_feed()
}
return Response(content)
class PostView(APIView):
# Cache page for the requested url
@method_decorator(cache_page(60*60*2))
def get(self, request, format=None):
content = {
'title': 'Post title',
'body': 'Post content'
}
return Response(content)
NOTE: The cache_page
decorator only caches the
GET
and HEAD
responses with status 200.