Volver a la página principal
miércoles 16 octubre 2024
10

Cómo implementar cache en Django

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.

¿Qué es el caching en Django?

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.

Estrategias de caching en Django

1. Caching de vistas completas

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')

2. Caching de fragmentos

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 %}

3. Caching de objetos en la vista

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})

4. Configurar el backend de caché

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',
    }
}

Documentación oficial de Django

Para más información sobre las opciones avanzadas de caching, puedes consultar la documentación oficial de Django.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer