2010-11-09 10 views
6

Mi comprensión del ciclo de vida de la sesión en Ruby on Rails (específicamente v3 y posteriores) es que se crea una sesión al inicio de una solicitud, para cada solicitud, y si esa solicitud no contiene una cookie de sesión existente a se creará uno nuevo; de lo contrario, la cookie de sesión se deserializará y almacenará en el hash de la sesión.¿Es posible que las sesiones Rails se creen 'justo a tiempo'?

El propósito de esto, por supuesto, es compatible con una serie de características de seguridad tales como CSRF etc.

Sin embargo, esto plantea un poco de un problema cuando se trata de almacenamiento en caché de páginas en un sitio con los servicios de caché HTTP y proxies como Varnish, ya que la mayoría de las configuraciones tienden a eliminar estas (generalmente todas) las cookies tanto en el lado de la solicitud como en el de respuesta (ya que el caché generalmente está destinado a un público generalizado).

Sé que es posible configurar Barniz, etc. para crear el hash del objeto con los detalles de la cookie incluidos, y esto abarcaría los datos en caché para esa sesión (y por lo tanto ese usuario), sin embargo, me pregunto si esto es completamente necesario.

Tengo una aplicación que es bastante "estática" en naturaleza - el contenido se extrae de una base de datos, se procesa en una página que luego se puede almacenar en caché - hay algunos elementos (como conteo de comentarios, elementos 'recientes', etc.) que se puede agregar con un ESI, pero para cada solicitud Rails todavía tiende a querer configurar una nueva sesión, y cuando un usuario ya tiene una sesión, el servidor de caché elimina esta información.

Me pregunto si sería posible (a través de la funcionalidad preexistente, o construyendo la funcionalidad yo mismo) para permitir que el desarrollador controle cuándo se requiere una sesión, y solo cuando eso se especifique es hacia atrás y hacia delante con cookies, es necesaria la inicialización/deserialización de la sesión, etc.

Eso, o estoy pensando en este problema por el camino equivocado y la necesidad de abordar la cuestión desde otro ángulo ...

+0

Si simplemente lo deja como está ahora y hace una llamada ajax para cargar las partes "específicas del usuario" de la página, ¿funciona? –

Respuesta

1

Si su sitio es principalmente estática entonces es posible que desee utilizar cac página completa Hing. Esto elimina por completo a Rails de la solicitud y permite que el servidor web se encargue de ella una vez que se ha generado el contenido. Puede causar algunos dolores de cabeza graves dependiendo de sus necesidades exactas en lo que respecta al comentario y las especificaciones del usuario.

Cuestiones relacionadas