Hola a todos tengo una duda sobre el funcionamiento de ESI y Etag, es vieja mi duda pero aprovecho el espacio para si pueden aclararme:
- Con ESI se pueden guardar partes de la página y asignarle el tiempo de vida en la cache, eso lo entiendo. Y el Etag es un identificador para cada pagina que se le manda al navegador, si el navegador pide la misma URL y el etag es el mismo el servidor responde 304, Not Modified y el navegador renderiza lo que tiene en la cache.
- Pero que pasa si yo uso ESI en un pagina y hay un bloque que no se cachea (el bloque con lo datos del usuario logueado), y en el resto de la pagina yo tengo una estrategia de cache mediante Etag o sea cuando se modifica algo en la base de datos cambio el etag. Y ENTONCES en la pagina no cambia nada pero en el bloque si.
Me imagino que el cacheo con Etag se pase por el forro ESI, o eso pienso yo, o sea me imagino que el navegador muestre lo mismo aunque en el bloque que no se cachea cambia algo. No se bien si esto sea así. Si alguien comprende esto explíquemelo se lo agradecería.
Respuestas
En el artículo Working with Edge Side Includes se explica el funcionamiento detallado, pero en resumen: si renderizas con ESI el bloque con los datos del usuario, su contenido es totalmente independiente al resto de la página. Así que puedes utilizar diferentes cachés para cada contenido (incluso diferentes estrategias de caché) y todo funcionará como esperas.
@javiereguiluz