framework documentacion cache borrar python django caching django-cache

python - cache - documentacion de django



Cómo probar el almacenamiento en caché de django? (4)

Burlarse de la vista, golpear la página y ver si se invocó el simulacro. si no fuera así, se usó el caché en su lugar.

¿Hay alguna manera de asegurarse de que una página provenga de la memoria caché en un servidor de producción y en el servidor de desarrollo también?

La solución no debe incluir el middleware de caché porque no todos los proyectos los usan. Aunque la solución en sí misma podría ser un middleware.

Solo verificando si la información está obsoleta no es un método de prueba muy seguro IMO.


La razón por la que utiliza cachés es para mejorar el rendimiento. Pruebe el rendimiento ejecutando una prueba de carga contra su servidor. Si el rendimiento del servidor coincide con sus necesidades, ¡entonces está listo!


Hacemos un montón de componentes de almacenamiento en caché y no todos se actualizan al mismo tiempo. Así que establecemos los valores de host y timestamp en un procesador de contexto universalmente incluido. En la parte superior de cada fragmento de plantilla, nos quedamos:

<!-- component_name {{host}} {{timestamp}} -->

El nombre_componente solo hace que sea fácil hacer una fuente de vista y buscar esa cadena.

Todas nuestras vistas que son páginas de detalles de objeto definen una variable de contexto "page_object" y tenemos esto en la parte superior del maestro de plantilla base.html:

<!-- {{page_object.class_id}} @ {{timestamp}} -->

class_id () es un método de una superclase utilizada por todas nuestras clases de contenido principal. Es sólo:

def class_id(self): "%s.%s.%s" % (self.__class__._meta.app_label, self.__class__.__name__, self.id)

Si carga una página y cualquiera de las marcas de tiempo tiene más de unos pocos segundos, es una buena apuesta que el componente esté en caché.


La sugerencia de Peter Rowells funciona bien, pero no necesita un procesador de plantilla de contexto personalizado para las marcas de tiempo. Simplemente puede usar la etiqueta de la plantilla:

<!-- {% now "jS F Y H:i" %} -->