htaccess expires control cache http-headers cache-control

http headers - expires - ¿Cuál es el riesgo de tener el encabezado HTTP "Cache-Control: public"?



http cache-control no-transform (2)

El encabezado HTTP / 1.1 de Cache-Control puede especificar max-age, así como también si el contenido del caché puede ser público o privado, lo que indica si el caché intermedio puede almacenar en caché el contenido.

Por ejemplo, expires_in() Ruby on Rails está por defecto usando Cache-Control: private

¿Cuál es el riesgo de hacerlo público? Si es público, ¿qué lugares adicionales pueden almacenar en caché el contenido? ¿Sería un servidor proxy, por ejemplo?

¿Qué pasa si el sitio web es como Amazon.com, pero el usuario es anónimo, entonces probablemente no hay mucho problema de privacidad? ¿Qué ocurre si el usuario está conectado, podría haber problemas de privacidad, porque los datos pasan por lugares y los datos están visibles? Si esa ubicación quiere ser "mala", realmente no necesita preocuparse por el Cache-Control: private todos modos.

¿Qué pasa si se trata de un sitio web donde el usuario puede iniciar sesión, pero el sitio web solo busca productos de salud como aceite de pescado y vitaminas, y así sucesivamente? En ese caso, hay incluso menos privacidad involucrada porque es diferente a Amazon.com, donde hay mucha más variedad de productos, como libros, para los cuales a un usuario realmente le importa más el tema de la privacidad.

Habiendo dicho eso, ¿cuál es la ventaja adicional de tener Cache-Control: public ?


El problema con Cache-Control: Public es que la respuesta puede almacenarse en caché y mostrarse a un usuario diferente. Esto es un problema si tiene una aplicación autenticada que muestra datos privados. En general, solo debe usar public para páginas estáticas, o páginas que devuelven los mismos datos sin importar qué usuario haga la solicitud.


Encontré además la siguiente especificación:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1

público

Indica que la respuesta PUEDE ser almacenada en caché por cualquier caché, incluso si normalmente no sería cacheable o cacheable solo dentro de un caché no compartido. (Consulte también Autorización, sección 14.8, para obtener detalles adicionales).

privado

Indica que todo o parte del mensaje de respuesta está destinado a un único usuario y NO DEBE ser almacenado en caché por un caché compartido. Esto permite que un servidor de origen indique que las partes especificadas de la respuesta están destinadas a un solo usuario y no son una respuesta válida para solicitudes de otros usuarios. Una memoria caché privada (no compartida) PUEDE almacenar en caché la respuesta. Nota: Este uso de la palabra privado solo controla dónde se puede almacenar la respuesta en la memoria caché y no puede garantizar la privacidad del contenido del mensaje.

Por lo tanto, parece que se trata más de "caché compartido" en lugar de caché intermedia.