将ETag添加到HTTP响应时,是否应该包含媒体类型?当然,我知道ETag是不透明的,但这是一个例子:
显然,简单地返回304是不正确的,但我的问题是,在第二个请求中,我希望ETag匹配但是没有基于Accept标头(或内容标头)的缓存。此外,缓存是否有可能来自同一URI的两个表示,或者每次切换内容类型时是否总是有无效的缓存?
答案 0 :(得分:5)
不同的表示需要不同的实体标签。
答案 1 :(得分:-1)
我相信你可以发送相同的Etag用于不同的表示。只要您指定,它们应该作为两个不同的实体缓存在您的响应中。 这可以使用Vary字段完成,如RFC 2616
中所述http://www.ietf.org/rfc/rfc2616.txt
14.44变化
Vary字段值表示请求标头字段的集合 完全确定响应是否新鲜,是否是缓存 允许使用响应来回复后续请求 没有重新验证。对于无法缓解或陈旧的回应,Vary 字段值向用户代理建议所使用的标准 选择表示。
使用Vary: Accept
应该是合适的。