1

例如,在高流量 Web 服务器上。

为了减少切换文件时的问题,我通常将旧文件重命名,然后在新文件中重命名。

前段时间有人告诉我,重命名文件不会更改“inode 数据”,因此读取文件的进程可以继续这样做而不会出现故障。而且,当然,重命名临时副本比复制新文件更快、更安全。

这仍然是最佳做法吗?如果不是,你会怎么做?

4

1 回答 1

1

假设您使用 Apache http-server。

Apache 通常使用内核函数 sendfile 来发送静态文件,这意味着由内核来缓存文件内容并跟踪文件何时更改。

您应该创建新文件,然后用新文件替换旧文件,例如

mv newfile oldfile

然后将提供新文件的内容而不是旧文件。请注意,在 HTTP 级别上启用的任何缓存设置都可能会影响浏览器和代理是交付旧文件还是新文件。

于 2010-04-06T12:48:04.440 回答