Caché en django CMS

Para configurar la caché en django CMS primero tendremos que configurar un backend de caché para django.

Más detalles sobre caché en django aquí:

Configuración del middleware:

quedando una cosa así:

MIDDLEWARE_CLASSES=[
    'django.middleware.cache.UpdateCacheMiddleware',
    ...
    'cms.middleware.language.LanguageCookieMiddleware',
    'cms.middleware.user.CurrentUserMiddleware',
    'cms.middleware.page.CurrentPageMiddleware',
    'cms.middleware.toolbar.ToolbarMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
],

Plugins

Normalmente, todos los plugins serán almacenados en caché. Si tiene un plugin dinámico basado en el usuario actual u otras propiedades dinámicas de la petición, establezca el atributo cache=False en la clase plugin:

class MyPlugin(CMSPluginBase):
    name = _("MyPlugin")
    cache = False

Nota: Si deshabilita una caché de plugin asegúrese de reiniciar el servidor y luego desactive la caché.

Duración de la caché

Por defecto es 60 segundos pero puede ser cambiado estableciendo el valor que queramos en la settings CMS_CACHE_DURATIONS

Settings

El almacenamiento en caché se establece por defecto como true. Existen varias settings para habilitar/deshabilitar varios comportamientos de caché:

CMS_CACHE_DURATIONS

Este diccionario contiene las distintas configuraciones de duración de caché.

'content': 60 segundos por defecto para show_placeholder, page_url, placeholder and static_placeholder template tags.

'menus': 3600 segundos por defecto.

CMS_CACHE_PREFIX

cms- por defecto.

El CMS pondrá el valor asociado a esta clave para cada acceso a la caché (set y get). Esto es útil cuando tiene varias instalaciones de django CMS, y no quiere que compartan objetos de caché.

CMS_CACHE_PREFIX = 'mysite-live'

CMS_PAGE_CACHE

True por defecto

Las páginas no son almacenadas en caché para los usuarios logados. Si el toolbar es visible, la página no está cacheada.

CMS_PLACEHOLDER_CACHE

True por defecto

CMS_PLUGIN_CACHE

True por defecto