多个路径共享同一个ETag可以吗?
Is it OK for several paths to share the same ETag?
我 运行 一个 real-time 图片大小调整服务器,充当浏览器和拥有原始图片的服务器之间的代理:
Browser <=> Resize server <=> Origin server
我可以在调整大小的服务器上请求一个图像,使用不同的参数:
/images/kitten.jpg?w=400&h=300
/images/kitten.jpg?w=800&h=600
两个请求都将在源服务器上获取相同的文件 /images/kitten.jpg
,但会生成此图像的不同版本(大小)。
现在我想实现缓存。假设源服务器发送 ETag
header:
ETag: "13456789abcdef"
如果我只是转发未修改的 ETag
以及我调整大小的图像,浏览器将在两个不同的路径上缓存两个不同的图像,具有相同的 ETag
.
现在我可以愉快地将任何 If-None-Match
header 从浏览器转发到源服务器,并通过在 return.
但是当我的网络服务器上的两条路径,服务不同的内容,共享相同的内容时,这会不会是一个问题ETag
?
到目前为止我已经成功地实施了它,一切似乎都按预期工作。我只是想确保我没有忽略某些东西,并且在浏览器的缓存中有多个路径共享相同的 ETag
没有副作用。
不,这不是问题。 ETag 是每个请求 URI。
我 运行 一个 real-time 图片大小调整服务器,充当浏览器和拥有原始图片的服务器之间的代理:
Browser <=> Resize server <=> Origin server
我可以在调整大小的服务器上请求一个图像,使用不同的参数:
/images/kitten.jpg?w=400&h=300
/images/kitten.jpg?w=800&h=600
两个请求都将在源服务器上获取相同的文件 /images/kitten.jpg
,但会生成此图像的不同版本(大小)。
现在我想实现缓存。假设源服务器发送 ETag
header:
ETag: "13456789abcdef"
如果我只是转发未修改的 ETag
以及我调整大小的图像,浏览器将在两个不同的路径上缓存两个不同的图像,具有相同的 ETag
.
现在我可以愉快地将任何 If-None-Match
header 从浏览器转发到源服务器,并通过在 return.
但是当我的网络服务器上的两条路径,服务不同的内容,共享相同的内容时,这会不会是一个问题ETag
?
到目前为止我已经成功地实施了它,一切似乎都按预期工作。我只是想确保我没有忽略某些东西,并且在浏览器的缓存中有多个路径共享相同的 ETag
没有副作用。
不,这不是问题。 ETag 是每个请求 URI。