Cómo deshabilitar el almacenamiento en caché de páginas Django / mod_WSGI

Tengo Django corriendo en Apache a través de mod_wsgi. Creo que Django está guardando en caché mis páginas del lado del servidor, lo que está causando que algunas de las funciones no funcionen correctamente.

Tengo un temporizador de cuenta regresiva que funciona al obtener la hora actual del servidor, determinar el tiempo restante de la cuenta regresiva y emitir ese número a la plantilla HTML. Un temporizador de cuenta regresiva de javascript luego toma el control y ejecuta la cuenta regresiva para el usuario.

El problema surge cuando el usuario actualiza la página o navega a una página diferente con el temporizador de cuenta regresiva. El temporizador parece saltar a diferentes tiempos esporádicamente, generalmente regresando al mismo tiempo una y otra vez en cada actualización.

Usando HTTPFox, la página no se está cargando desde la memoria caché de mi navegador, por lo que parece que Django o Apache almacenan en la memoria caché la página. ¿Hay alguna manera de deshabilitar esta funcionalidad? No voy a tener suficiente tráfico para preocuparme por el almacenamiento en caché de la salida del script. ¿O estoy completamente equivocado acerca de por qué esto está sucediendo?

[Editar] De las publicaciones a continuación, parece que el almacenamiento en caché está deshabilitado en Django, lo que significa que debe estar sucediendo en otro lugar, ¿quizás en Apache?

[Editar] Tengo una descripción más detallada de lo que está sucediendo: para las primeras 7 (o más) solicitudes hechas al servidor, las páginas son procesadas y devueltas por el script, aunque cada una de esas 7 páginas parece estar almacenada en caché. aparece más tarde. En la octava solicitud, el servidor sirve la primera página. En la novena solicitud, se muestra la segunda página, y así sucesivamente en un ciclo. Esto dura hasta que reinicie Apache, cuando el proceso comienza de nuevo.

[Editar] He configurado mod_wsgi para ejecutar solo un proceso a la vez, lo que hace que el temporizador se restablezca al mismo valor en todos los casos. Sin embargo, curiosamente, hay otro componente en mi página que muestra una imagen al azar en cada solicitud, usando order (‘?’), Y que se actualiza con diferentes imágenes cada vez, lo que indicaría que el almacenamiento en caché está sucediendo en Django y no en Apache.

[Editar] A la luz de la edición anterior, regresé y revisé el archivo views.py relevante, encontrando que la variable de inicio de la cuenta regresiva se estaba configurando globalmente en el módulo, fuera de las funciones de vista. Mover esa configuración dentro de las funciones de vista resolvió el problema. Así que resultó no ser un problema de almacenamiento en caché después de todo. Gracias a todos por su ayuda en esto.

Desde mi experiencia con mod_wsgi en Apache, es muy poco probable que estén causando almacenamiento en caché. Un par de cosas para probar:

  1. Es posible que tenga algún servidor proxy entre su computadora y el servidor web que está almacenando en caché las páginas de manera apropiada o inapropiada. A veces, los ISP ejecutan servidores proxy para reducir el ancho de banda fuera de su red. ¿Puede proporcionar los encabezados HTTP para una página que se está almacenando en caché (Firebug puede proporcionarle estos)? Los encabezados que me interesarían específicamente incluyen Cache-Control, Expires, Last-Modified y ETag.
  2. ¿Puedes publicar tu MIDDLEWARE_CLASSES desde tu archivo settings.py? Es posible que tenga un Middleware que realice el almacenamiento en caché por usted.
  3. ¿Puede grep su código para los siguientes elementos “cargar caché”, “django.core.cache” y “caché_página”. A * grep -R “search” ** funcionará.
  4. ¿La configuración.py (o cualquier cosa que importe como “desde importación de configuraciones locales *”) incluye CACHE_BACKEND?
  5. ¿Qué pasa cuando reinicias apache? (por ejemplo, sudo services apache restart). Si un reinicio soluciona el problema, entonces podría ser un apache haciendo almacenamiento en caché (es posible que esto también pueda eliminar un backmen de caché Django locmen)

Acabo de encontrar esto:

Soporte para recarga automática Para ayudar a las herramientas de implementación, puede activar el soporte para recarga automática. Cada vez que algo cambia el archivo .wsgi, mod_wsgi volverá a cargar todos los procesos del daemon para nosotros.

Para eso, simplemente agregue la siguiente directiva a su sección de Directorio:

WSGIScriptReloading On 

¿Configuró específicamente el almacenamiento en caché de Django? De los documentos parece que usted sabría claramente si Django estaba almacenando en caché, ya que requiere trabajo de antemano para que funcione. Específicamente, debe definir dónde se guardan los archivos en caché.

http://docs.djangoproject.com/en/dev/topics/cache/

¿Está utilizando una configuración multiproceso para Apache / mod_wsgi? Si es así, eso explicará por qué las diferentes respuestas pueden tener un valor diferente para el temporizador, ya que cuando se inicie el temporizador será diferente para cada proceso que maneje las solicitudes. Así pues, ¿por qué puede saltar?

Tener una lectura de

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

Calcule en qué modo o configuración está ejecutando Apache / mod_wsgi y quizás publique qué es esa configuración. Sin saberlo, hay demasiadas incógnitas.