Mi navegador sigue mostrando una página almacenada en caché a pesar de enviar un encabezado de respuesta sin caché, sin almacenamiento y que debe revalidar desde el servidor

Mi navegador sigue mostrando una página almacenada en caché a pesar de enviar un encabezado de respuesta sin caché, sin almacenamiento y que debe revalidar desde el servidor

El contenido de nuestras páginas sigue cambiando y, por lo tanto, no queremos que el navegador almacene en caché la página o muestre la página en caché o a nuestros usuarios. Pero el navegador sigue mostrando una página almacenada en caché a pesar de enviar un encabezado de respuesta sin caché, sin almacenamiento y que debe revalidar desde el servidor. Esto es realmente frustrante. ¡¡¡Tenemos miles de usuarios y todos están leyendo noticias antiguas!!!

Estamos utilizando la plantilla js del lado del cliente (handlebars js) para leer datos de un servidor y representar la página, pero el navegador sigue mostrando la última página representada a los usuarios y el manillar no lee datos nuevos del servidor ni actualiza el contenido. ¿¿Qué podría estar mal??

Si presiono Mayús y recarga, el navegador muestra contenido nuevo, pero no puedo pedir ni esperar que mis usuarios lo hagan cada vez que cargan nuestra página.

¿Alguien puede dar consejos útiles?

200 bien

Encabezado de respuesta:

Accept-Ranges: bytes
Cache-Control: no-cache, no-store, must-revalidate
Connection: keep-alive
Content-Length: 12229
Content-Type: text/html
Date: Fri, 14 Aug 2020 09:08:10 GMT
ETag: "1e9602c3ddcf81c338fa4194c61ea035"
Last-Modified: Fri, 07 Aug 2020 12:38:22 GMT
Server: nginx/1.19.1
Strict-Transport-Security: max-age=0; includeSubDomains
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
x-amz-request-id: tx00000000000004b9d2b06-005f36547a-ab8956-ams3b
x-rgw-object-type: Normal

Encabezados de solicitud:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Cache-Control: max-age=0
Connection: keep-alive
Cookie: _ga=GA1.1.709310680.1596978913; _gid=GA1.1.2045080055.1596978913
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
(index):48 [Violation] Avoid using document.write(). https://developers.google.com/web/updates/2016/08/removing-document-write

​ Estamos haciendo un http GET ya que habrá cloudflare delante de nginx que realizará la terminación de tls y realizará un http get normal a nuestro nginx. Me da miedo pensar qué otros problemas de almacenamiento en caché introducirá el almacenamiento en caché de Cloudflare una vez que entremos en funcionamiento en Cloudflare. Necesitamos comenzar a funcionar en un par de días y debemos resolver esto antes de comenzar a producir con esta versión. Agradeceremos ayuda rápida a este respecto para resolver el problema anterior. Gracias de antemano.

Respuesta1

has usadoDirectivas de control de cachéque entran en conflicto entre sí, por lo que el navegador debe tomar una decisión sobre qué directivas obedecer y cuáles ignorar.

Específicamente usaste:

  • no-cache. En realidad, esto permite que la respuesta se almacene en caché, aunque se marca inmediatamente como obsoleta y siempre se revalida con el servidor de origen.
  • must-revalidate: Solo significa que un documento almacenado en caché obsoleto debe revalidarse con el servidor de origen. Lo implícito en no-cacheso no tiene ningún efecto adicional aquí.
  • no-store: No almacene en caché la respuesta.

¿Qué hace un navegador cuando le has dicho que no lo almacene en caché y que también está bien almacenarlo en caché?

Si no desea que la respuesta se almacene en caché, usesolo no-store. No utilice las otras dos directivas Cache-Control.

información relacionada