2010-02-18 14 views
5

Cuando un usuario solicita la misma página, con los mismos datos ... Me gustaría que Django devuelva un 304, para que el navegador no tenga que volver a cargar la página.¿Cómo puedo integrar un 304 en Django?

Soy nuevo en esto. ¿Cómo puede hacerse esto?

Gracias.

Respuesta

12

Hay una amplia descripción de la documentación de Django: Conditional view processing

siguientes herramientas son particularmente útiles:

  1. @last_modified y @etag vista decoradores. Les proporciona una función para calcular el valor de la solicitud y todo lo demás se hace automáticamente.
  2. django.middleware.http.ConditionalGetMiddleware - genera ETag requerido y devuelve 304 si se produce un golpe de caché, pero esto aún lleva tiempo en el servidor para generar HTML completo y solo se guarda el tiempo de red. Todavía es muy bueno para el cambio de configuración de una línea.
6

Se podría buscar en caching system de Django, o si se puede comprobar fácilmente si el usuario está solicitando los mismos datos, se puede devolver un HttpResponseNotModified() - esto devuelve un 304. Mira la documentación here.

+2

El almacenamiento en caché del lado del servidor es útil, pero no relacionado con HTTP 304. Y es cierto que puede devolver HttpResponseNotModified usted mismo, pero Django ya tiene mecanismos integrados para verificar la misma respuesta y devolver el 304 por usted; ver la respuesta de Alex Lebedev. –

+0

Gracias Carl, ¡yo no sabía eso! Todavía tengo mucho para aprender sobre Django. – hora

Cuestiones relacionadas