2011-08-29 79 views
3

资源可以由多个URI标识。例如如何在PUT请求的情况下使'其他'URI失效?

/person/1234 
/person/list?fname=John 
/person/list?lname=Doe 

上述所有可能包含的资源: 人 -

id: 1234 
fname: John 
lname: Doe 
age: 10 

说要李四的年龄从10改到15所以你把下面到/人/ 1234

id: 1234 
fname: John 
lname: Doe 
age: 15 

我该如何强制客户端使其他2个URL失效?

回答

0

将由其他两个URL返回的ETag更改为新值(例如,数据的散列)。

+0

让我重新解释我的问题。客户端在更新之前已经调用了3个URL。所以它已经有了资源的表示。假设在这些表示上设置了expires标题,从现在起一个小时内。更新完成后,其他两个资源应该立即停止。但客户不会知道,除非它们对他们进行GET,而这不会发生一个小时。 – Sam

+1

除非您在协议中生成invalidate命令,否则您无法告诉客户端在未提出请求的情况下使某些内容失效。 – SLaks

+0

谨慎阐述?你认为无效命令是什么意思? – Sam

0

使/person/list?fname=John/person/list?lname=Doe重定向到/person/1234而不是自己返回实体数据。

+0

或者,将请求的Content-Location:/ person/1234头返回给两个URI/person/list?....这将告诉任何缓存它应该将这些响应的任何副本视为陈旧。 http://www.ietf.org/id/draft-ietf-httpbis-p6-cache-16.txt(第2.5节) –

相关问题