El caching en Django es una técnica para almacenar en caché (cache) datos o páginas web generadas, reduciendo el tiempo de respuesta y la carga en el servidor. Django proporciona varias estrategias de caché que permiten mejorar el rendimiento de las aplicaciones al evitar el procesamiento repetitivo de solicitudes similares.
El caching en Django consiste en guardar temporalmente los resultados de cálculos costosos o las respuestas de vistas para que las siguientes solicitudes similares sean servidas más rápido. Almacenando en caché contenido, se minimiza la carga en la base de datos y el servidor, acelerando la entrega de la página web o los datos.
Django soporta varios métodos de almacenamiento en caché, como caché de memoria, de archivos, y servicios externos como Redis o Memcached. El caché puede ser aplicado a nivel de toda la vista, de fragmentos específicos o de objetos de datos.
Esta técnica guarda el resultado completo de una vista por un tiempo determinado. Para usarla, se emplea el decorador cache_page
.
Ejemplo:
from django.views.decorators.cache import cache_page
@cache_page(60 * 15) # Almacena en caché la vista por 15 minutos
def my_view(request):
# Lógica de la vista
return render(request, 'my_template.html')
Es útil cuando solo se desea almacenar en caché una parte específica de una página. Esto se realiza mediante el uso de los bloques {% cache %}
en plantillas.
Ejemplo en una plantilla HTML:
{% load cache %}
{% cache 300 some_fragment_key %}
<!-- Contenido que será almacenado en caché durante 5 minutos -->
<div>
{{ some_data }}
</div>
{% endcache %}
Se puede almacenar en caché objetos específicos, como consultas a bases de datos u otras operaciones costosas.
Ejemplo:
from django.core.cache import cache
def my_view(request):
data = cache.get('my_data_key')
if not data:
data = expensive_database_query()
cache.set('my_data_key', data, 60 * 15) # Almacena en caché por 15 minutos
return render(request, 'my_template.html', {'data': data})
Django permite configurar diferentes sistemas de caché a través del archivo settings.py
. Por ejemplo, para usar el backend de caché en memoria:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake',
}
}
Si deseas usar Redis o Memcached, puedes configurarlo de esta manera:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
Para más información sobre las opciones avanzadas de caching, puedes consultar la documentación oficial de Django.
Jorge García
Fullstack developer