Forzando el No-Cache
En Transparent Edge somos partidarios de que nuestros clientes tengan la mayor autonomía. 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:
no-cache
no-store
max-age=0
private
must-revalidate
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, usaremos No-Cache.
Aquí también vas a tener alternativas. Nosotros te vamos a proponer dos que posiblemente cubran el 95% de los casos de uso.
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.
sub vcl_recv {
if ((bereq.http.host == "www.transparentedge.eu") && (bereq.url ~ "/my-new-url")) {
set req.http.TCDN-Command = "pass, " + req.http.TCDN-Command;
}
}
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 cachs del navegador. Si buscas que sí lo haga, tal vez sea mejor usar la siguiente opción.
sub vcl_backend_response {
if ((bereq.http.host == "www.transparentedge.eu") && (bereq.url ~ "/my-new-url")) {
unset beresp.http.Cache-Control;
set beresp.http.Cache-Control = "max-age=0";
set beresp.ttl = 0s;
}
}
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, como en la cabecera de caché que queremos que se propague al navegador (Cache-Control).
Última actualización 4mo ago