关于代理缓存和etag的两个问题
来源:2-3 Nginx优势多路IO复用
烈焰卡卡
2020-06-29
老师您好,关于在proxy cache中的 etag,我有两个问题
1. 在没有slice的情况下,每个文件在nginx上被缓存时,是否会缓存后端返回的etag,这个etag是存在缓存文件中么?
2. 在有slice的情况下,我记得在http range请求中,无论请求哪个区间,返回的etag应该都是一样的。那么假设有一个文件,会被slice成2个分片,分片1现在被缓存在nginx中,他记录的文件etag为a。现在后端文件更新了,文件的etag变成了b,这时候客户端再请求该文件时,请求分片1中的内容会被返回刚才缓存的部分,分片2中的内容由于没有被缓存会去后端获取到最新的文件内容,那么这种数据不一致的情况ngimx是否会出现,又是如何避免的?
写回答
1回答
-
Jeson
2020-07-02
你好!
理解不太正确
1、 etag是客户端缓存存,它 是计算 Last-Modified 与 Content-Length,Last-Modified是文件更改时间戳而Content-Length是文件大小计算得到。
2、如果nginx端的静态缓存,那就是file cache ,这里机制不一样的。
3、如果是proxy_cache,那么主要是基于proxy_cache_key维度来作,如:
proxy_cache_key $host$uri$is_args$args;
022020-07-02
相似问题
nginx 缓存配置
回答 2
代理缓存
回答 2