Forzando el no-cache

Lo que nos gusta a todos: enviar las cabeceras desde origen

En Transparent Edge Services somos partidarios de que nuestros clientes tengan la mayor autonomía posible. Por eso animamos siempre a que la configuración de la CDN sea lo más simple posible y que las cabeceras de caché, siempre que se pueda, se envíen desde los servidores de origen. En este enlace tienes información sobre cómo hacerlo.
Para forzar que un objeto no se cachee, puedes configurar la cabecera Cache-Control con cualquiera de estos valores:
1
no-cache
2
no-store
3
max-age=0
4
private
5
must-revalidate
Copied!
Aunque cada una tiene pequeñas diferencias, en la práctica tienen el mismo efecto, que es que no se cachee el contenido. Si nos tenemos que decantar por una, usa no-cache.

Forzar la cabecera de no-cache desde Transparent Edge Services

Aquí también vas a tener alternativas. Nosotros te vamos a proponer dos que posiblemente cubran el 95 % de los casos de uso.

No cachear el objeto nunca en la CDN sin importar lo que venga de origen

En esta opción vamos a hacer que el objeto nunca se cachee en la CDN independientemente de las cabeceras de caché que vengan de origen. Para ello usaremos la cabecera req.http.TCDN-Command dentro de la función vcl_recv.
1
sub vcl_recv {
2
if ((bereq.http.host == "www.transparent.com") && (bereq.url ~ "/my-new-url")) {
3
set req.http.TCDN-Command = "pass, " + req.http.TCDN-Command;
4
}
5
}
Copied!
Este fragmento de código forzará que el objeto se salte la caché de Varnish y, por tanto, nunca se almacenará en la CDN. Esta configuración no afecta sobre las caches del navegador. Si buscas que sí lo haga, tal vez sea mejor usar la siguiente opción.

No cachear el objeto en la CDN reescribiendo las cabeceras de origen

1
sub vcl_backend_response {
2
if ((bereq.http.host == "www.transparent.com") && (bereq.url ~ "/my-new-url")) {
3
unset beresp.http.Cache-Control;
4
set beresp.http.Cache-Control = "max-age=0";
5
set beresp.ttl = 0s;
6
}
7
}
Copied!
Con este código vamos a sobreescribir las cabeceras que vengan de origen y a ponerles el tiempo que nosotros queremos almacenar en caché ese objeto. En nuestro caso son 0s, tanto en el ttl interno, que forzará que ese objeto se guarde en la caché de Transparent Edge Services, como en la cabecera de caché que queremos que se propague al navegador (Cache-Control).
Aquí puedes consultar también cómo hacer reescrituras de cabeceras con más detalle.
Última actualización 9d ago