每次修改文件时,我都想使一些本地生成的缓存失效。如果手动运行某个命令行工具(不需要实时监视),就会发生失效。
我的做法是:
是否使用足够的文件修改日期使此方法可靠,或者是否应该检查文件快捷方式(一些散列函数),如果文件修改日期没有更改(误报不是问题,但每次文件更改时都需要使缓存失效)。
文件将使用VCS和云存储(如Dropbox或OneDrive )共享。
问题与操作系统无关(也就是说,它必须在每个常用的操作系统(Windows、Mac、其他POSIX兼容的操作系统)上工作)。
发布于 2019-08-19 19:37:33
对于缓存失效,文件修改时间可靠吗?
我会说是,我认为你应该考虑使用Make。
假设我们需要缓存昂贵进程的计算:计算1到n之间的所有数字。
数字n是从文件input.txt中读取的。
文件count.cache包含介于1和n之间的所有数字的序列。
鉴于以下结构:
data/
├── input.txt
├── Makefile和下面的Makefile
count.cache: input.txt
cat $^ | xargs seq >$@首先,input.txt是空的。让我们把一些数字放在里面:
echo '5'>input.txt那么让我们运行make
make产出如下:
cat input.txt | xargs seq >count.cache这是count.cache的内容
cat count.cache
1
2
3
4
5现在让我们再次运行make:
make
make: `count.cache' is up to date.为什么?为了生成count.cache (目标),您需要input.txt (先决条件)。如果前提条件没有改变,那么目标仍然有效。
让我们更新input.txt
echo '10'>input.txt让我们再次运行make:
make
cat input.txt | xargs seq >count.cache默认情况下,make输出生成目标所需的命令。如您所见,make已经发现它需要重新生成count.cache,因为它的先决条件是input.txt已经改变了。
让我们验证一下:
cat count.cache
1
2
3
4
5
6
7
8
9
10乍一看,make看起来令人望而生畏,但它是一个非常强大的工具。它绝对值得花时间去学习它,它会得到上百倍的回报!
发布于 2019-08-13 16:35:55
红色似乎是你更好的选择!您可以通过docker轻松地拆分一个实例,并将其用作缓存。
这是一种新的依赖关系,但它为您管理了许多技术性问题。
https://stackoverflow.com/questions/57437530
复制相似问题