2012-03-20 15 views
7

Tengo una situación de caché muy específica. Utilizamos varias soluciones para el almacenamiento en caché y me pregunto cuál es la mejor solución para invalidar el caché en una acción del usuario.¿Cómo puedo invalidar la caché de la manera correcta?

El caché es como tan

  • Primera capa: CDN almacena en caché la página completa como HTML para los usuarios registrados de salida

  • Segunda capa: caché de página completa en memcached para los usuarios registrados de salida La razón por la que tengo la segunda capa es para responder a los bordes, a veces no todos los bordes están en la memoria caché, por lo que también quiero "responder" al borde de la memoria caché.

  • Tercera capa: datos parciales de la base de datos del caché y de la base de datos para los usuarios que han iniciado sesión.

Mi problema es que mi proceso de invalidación está muy basado en la tercera capa en este momento, y no responder a la segunda y la primera capa lo suficientemente bien.

Mi pregunta es: ¿cuál es la mejor manera de invalidar la caché en la URL completa de una clave de caché que no tiene absolutamente ningún acoplamiento con la URL? Por ejemplo, si tengo un plan de viaje, dentro del plan de viaje hay comentarios, quiero invalidar la URL del plan de viaje de página completa cuando un usuario comenta con un nuevo comentario.

El modelo de comentario no tiene URL, y el "padre" tampoco tiene la URL, el mismo comentario también aparecerá en la página de la ciudad, por lo que es completamente un objeto reutilizable y parcial.

Respuesta

3

He leído algunos posts de blog de David Heinemeier Hansson en el 37signals blog.

Su toma en el problema es almacenar en caché todos los objetos diferentes en la página y luego usar CSS y JS para personalizar la vista.

  • En el first post DHH utiliza la tecnología que utilizan para hacer que la nueva interfaz para Basecamp sea tan extremadamente rápida.
  • En el second post revisa cómo funciona la caducidad basada en claves.

Puede que no resuelva sus problemas, pero con la descripción que dio creo que al menos podría darle algunos consejos.

+2

Esta es realmente una muy buena solución y ha cambiado la forma en que pienso sobre el almacenamiento en caché. Si el chico que comenzó este hilo aún no ha leído estas publicaciones, debería hacerlo. Suena exactamente lo que necesita (invalidar una página entera si algo dentro cambia). –

Cuestiones relacionadas