Aller au contenu

Caching

Cache au niveau de la page

from django.views.decorators.cache import cache_page
@cache_page(60 * 15) # Cache for 15 minutes
def product_list(request):
products = Product.objects.all()
return render(request, 'products/list.html', {'products': products})

Cache au niveau du template

{% load cache %}
{% cache 500 sidebar request.user.id %}
{% for item in expensive_query %}
{{ item }}
{% endfor %}
{% endcache %}

Cache au niveau du code

from django.core.cache import cache
def get_expensive_result(user_id):
cache_key = f'expensive_result_{user_id}'
result = cache.get(cache_key)
if result is None:
result = expensive_computation(user_id)
cache.set(cache_key, result, timeout=3600)
return result