Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【Q112】如果 http 响应头中 ETag 值改变了,是否意味着文件内容一定已经更改 #113

Open
shfshanyue opened this issue Dec 10, 2019 · 3 comments
Labels

Comments

@shfshanyue
Copy link
Owner

No description provided.

@shfshanyue
Copy link
Owner Author

shfshanyue commented Dec 10, 2019

不一定,由服务器中 ETag 的生成算法决定。详见 #112

比如 nginx 中的 etaglast_modifiedcontent_length 组成,而 last_modified 又由 mtime 组成

当编辑文件却未更改文件内容时,或者 touch filemtime 也会改变,此时 etag 改变,但是文件内容没有更改。

@collins999
Copy link

collins999 commented Jun 20, 2020

比如 nginx 中的 etag 由 last_modified 与 content_length 组成,而 last_modified 又由 mtime 组成。

那Etag是怎么解决last_modified,当编辑文件却未更改文件时间的问题?

@shfshanyue
Copy link
Owner Author

比如 nginx 中的 etag 由 last_modified 与 content_length 组成,而 last_modified 又由 mtime 组成。

那Etag是怎么解决last_modified,当编辑文件却未更改文件时间的问题?

  1. 此时文件大小有可能发生更改,ETag 会改变
  2. 此时文件大小没有发生更改,ETag 不会改变。但这需要极其苛刻的条件:1s 内更改文件,并且保持文件大小不变。这种情况出现概率很低,因此忽略了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants