首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于缓存失效,文件修改时间可靠吗?

对于缓存失效,文件修改时间可靠吗?
EN

Stack Overflow用户
提问于 2019-08-09 21:54:16
回答 2查看 209关注 0票数 2

每次修改文件时,我都想使一些本地生成的缓存失效。如果手动运行某个命令行工具(不需要实时监视),就会发生失效。

我的做法是:

  1. 首先生成缓存和存储文件修改日期。
  2. 在随后的运行中,检查文件修改日期是否与存储的日期不同--如果是:使缓存失效,并再次生成它。

是否使用足够的文件修改日期使此方法可靠,或者是否应该检查文件快捷方式(一些散列函数),如果文件修改日期没有更改(误报不是问题,但每次文件更改时都需要使缓存失效)。

文件将使用VCS和云存储(如Dropbox或OneDrive )共享。

问题与操作系统无关(也就是说,它必须在每个常用的操作系统(Windows、Mac、其他POSIX兼容的操作系统)上工作)。

EN

回答 2

Stack Overflow用户

发布于 2019-08-19 19:37:33

对于缓存失效,文件修改时间可靠吗?

我会说是,我认为你应该考虑使用Make

假设我们需要缓存昂贵进程的计算:计算1到n之间的所有数字。

数字n是从文件input.txt中读取的。

文件count.cache包含介于1和n之间的所有数字的序列。

鉴于以下结构:

代码语言:javascript
复制
data/
├── input.txt
├── Makefile

和下面的Makefile

代码语言:javascript
复制
count.cache: input.txt
    cat $^ | xargs seq >$@

首先,input.txt是空的。让我们把一些数字放在里面:

代码语言:javascript
复制
echo '5'>input.txt

那么让我们运行make

代码语言:javascript
复制
make

产出如下:

代码语言:javascript
复制
cat input.txt | xargs seq >count.cache

这是count.cache的内容

代码语言:javascript
复制
cat count.cache
1
2
3
4
5

现在让我们再次运行make

代码语言:javascript
复制
make
make: `count.cache' is up to date.

为什么?为了生成count.cache (目标),您需要input.txt (先决条件)。如果前提条件没有改变,那么目标仍然有效。

让我们更新input.txt

代码语言:javascript
复制
echo '10'>input.txt

让我们再次运行make

代码语言:javascript
复制
make
cat input.txt | xargs seq >count.cache

默认情况下,make输出生成目标所需的命令。如您所见,make已经发现它需要重新生成count.cache,因为它的先决条件是input.txt已经改变了。

让我们验证一下:

代码语言:javascript
复制
cat count.cache 
1
2
3
4
5
6
7
8
9
10

乍一看,make看起来令人望而生畏,但它是一个非常强大的工具。它绝对值得花时间去学习它,它会得到上百倍的回报!

https://www.gnu.org/software/make/

票数 1
EN

Stack Overflow用户

发布于 2019-08-13 16:35:55

红色似乎是你更好的选择!您可以通过docker轻松地拆分一个实例,并将其用作缓存。

这是一种新的依赖关系,但它为您管理了许多技术性问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57437530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档