"Sólo hay dos problemas difíciles en la informática: invalidación de la caché y nombrar cosas".
Phil Karlton
¿Existe una solución o método general para invalidar un caché? saber cuándo una entrada está obsoleta, por lo que tiene la garantía de obtener siempre datos nuevos?
Por ejemplo, considere una función getData()
que obtiene datos de un archivo. Lo almacena en caché en función de la última hora de modificación del archivo, que verifica cada vez que se llama.
Luego agrega una segunda función transformData()
que transforma los datos y almacena en caché su resultado para la próxima vez que se llame a la función. No tiene conocimiento del archivo: ¿cómo agrega la dependencia de que si se cambia el archivo, esta caché deja de ser válida?
Puede llamar getData()
cada vez que transformData()
se llama y compararlo con el valor que se utilizó para construir la caché, pero eso podría terminar siendo muy costoso.
"The two hardest things in Computer Science are cache invalidation, naming things, and off-by-one errors."