我正在设计RESTful Web服务,并尝试提出一种处理项目集合的缓存和同步的好方法。我已经读过使用Etag和If-None-Match标头来优化各个资源的缓存,我想知道它们是否(或应该)用于集合。
我对您对以下方法的反馈感兴趣:
问题 - 我是否仅通过返回#4中的较新项而不是整个集合(包括已缓存在客户端上的项目)来颠覆GET的语义?或者这似乎是一种合理的方法?你能建议更好的替代方法吗?
提前致谢。
答案 0 :(得分:2)
通常,客户端在HEAD请求之后进行ETAG比较,并在必要时跟进更具体的请求(范围请求或查询比某个时间戳更新的条目)。服务器应该只是提供所请求的资源。
这个想法是,中间缓存代理可以插入到通信链中,而客户端或服务器不必更改其代码。