“计算机科学中只有两个难题: 缓存失效和命名。”
Phil Karlton
是否有通用的解决方案或方法来使缓存失效; 知道条目何时失效,从而确保始终获得新数据?
例如,考虑一个从文件获取数据的函数 getData()
。
它根据文件的最后一次修改时间来缓存它,每次调用它时都会检查这个时间。
然后添加第二个函数 transformData()
来转换数据,并在下次调用该函数时缓存其结果。它不知道该文件-如何添加依赖关系,如果文件被更改,这个缓存变得无效?
您可以在每次调用 transformData()
时调用 getData()
,并将其与用于构建缓存的值进行比较,但这可能会导致非常昂贵的代价。