Apache 将 inode 放入 ETag 的目的是什么?

Apache 将 inode 放入 ETag 的目的是什么?

网上有很多文章详细说明了为什么你可能会不是希望使用 Apache 默认的 inode-mtime-size 格式作为 ETag(参见这里或者这里)。所有这些文章都推荐同一件事:从 ETag 中删除 inode。

但我还没有读到任何关于最初促使 Apache 加入 inode 的动机。从表面上看,它似乎只有在需要区分同一资源的八位字节对八位字节传真时才有用,但这肯定违背了 ETag 的真正目的。

Apache 的作者们并不以草率处理互联网标准而闻名,所以我觉得我一定错过了什么。有人能详细说明一下吗?

答案1

我期望它能区分大小相同、修改时间相同但实际上不是同一文件的资源。这很容易做到——假设您有两个文件,它们的内容不同但大小相同(不是那么难)且修改时间相同(比较棘手,但如果您从其他地方复制了目录树,仍然不难),a并且b您正在a通过 Apache 提供服务。现在mv b a,虽然 inode 发生了变化a,但大小和修改时间没有变化——而且您没有 inode,因此陷入了困境。

相关内容