Una vez que hayas especificado CACHE_BACKEND
, la manera más simple de usar
la cache es colocar en cache el sitio entero. Esto significa que cada página
que no tenga parámetros GET o POST será puesta en cache por un cierto período
de tiempo la primera vez que sean pedidas.
Para activar la cache por sitio solamente agrega
'django.middleware.cache.CacheMiddleware'
a la propiedad
MIDDLEWARE_CLASSES
, como en el siguiente ejemplo:
MIDDLEWARE_CLASSES = (
'django.middleware.cache.CacheMiddleware',
'django.middleware.common.CommonMiddleware',
)
Nota El orden de MIDDLEWARE_CLASSES
importa. Mira la sección "Orden de
MIDDLEWARE_CLASSES
_" más adelante en este capítulo.
Luego, agrega las siguientes propiedades en el archivo de configuración de Django:
CACHE_MIDDLEWARE_SECONDS
: El tiempo en segundos que cada página será mantenida en la cache.CACHE_MIDDLEWARE_KEY_PREFIX
: Si la cache es compartida a través de múltiples sitios usando la misma instalación Django, coloca esta propiedad como el nombre del sitio, u otra cadena que sea única para la instancia de Django, para prevenir colisiones. Usa una cadena vacía si no te interesa.
La cache middleware coloca en cache cada página que no tenga parámetros GET o POST. Esto significa que si un usuario pide una página y pasa parámetros GET en la cadena de consulta, o pasa parámetros POST, la cache middleware no intentará obtener la versión en cache de la página. Si intentas usar la cache por sitio ten esto en mente cuando diseñes tu aplicación; no uses URLs con cadena de consulta, por ejemplo, a menos que sea aceptable que tu aplicación no coloque en cache esas páginas.
Esta cache middleware admite otras característica,
CACHE_MIDDLEWARE_ANONYMOUS_ONLY
. Si defines esta característica, y la
defines como True
, la cache middleware sólo colocará en cache pedidos
anónimos (p.e.: pedidos hechos por un usuario no logueado). Esta es una manera
simple y efectiva de deshabilitar la cache para cualquier página de algún
usuario específico, como la interfaz de administración de Django. Ten en cuenta
que si usas CACHE_MIDDLEWARE_ANONYMOUS_ONLY
, deberás asegurarte que has
activado AuthenticationMiddleware
y que AuthenticationMiddleware
aparezca antes de CacheMiddleware
en tus MIDDLEWARE_CLASSES
Finalmente, nota que CacheMiddleware
automáticamente coloca unos pocos
encabezados en cada HttpResponse
:
- Coloca el encabezado
Last-Modified
con el valor actual de la fecha y hora cuando una página (aún no en cache) es requerida. - Coloca el encabezado
Expires
con el valor de la fecha y hora más el tiempo definido enCACHE_MIDDLEWARE_SECONDS
. - Coloca el encabezado
Cache-Control
para otorgarle una vida máxima a la página, como se especifica enCACHE_MIDDLEWARE_SECONDS
.