【发布时间】:2011-12-17 05:34:14
【问题描述】:
如果我有一个 RESTful 服务,该服务通过以下端点具有可发现的资源:
请求:
GET http://acme.org/someInfo
回复:
HTTP/1.1 200 OK
Content-Length: ...
Content-Type: application/vnd.acme+xml
Date: Fri, 16 Dec 2012 12:40:00 GMT
Last-Modified: Tue, 1 Mar 2012 11:45:00 GMT
<someInfo xmlns="http://schemas.acme.org/someInfo" xmlns:dap="http://schemas.acme.org/dap">
<dap:link rel="http://relations.acme.org/someInfo" uri="htp://acme.org/someInfo/foo" />
<dap:link rel="http://relations.acme.org/someInfo" uri="htp://acme.org/someInfo/bar" />
<dap:link rel="http://relations.acme.org/someInfo" uri="htp://acme.org/someInfo/baz" />
</someInfo>
然后有了这个响应,客户端就可以跟随其中一个超媒体链接:
请求:
GET http://acme.org/someInfo/foo
回复:
HTTP/1.1 200 OK
Content-Length: ...
Content-Type: application/vnd.acme+xml
Date: Fri, 16 Dec 2012 12:45:00 GMT
Last-Modified: Wed, 28 Sep 2012 11:45:00 GMT
<fooInfo xmlns="http://schemas.acme.org/fooInfo">
...
</fooInfo>
第一个响应的更改频率可能较低(例如:几个月),而第二个响应可能会稍微更频繁地更改(例如:每个月左右)。对于这种情况,什么是好的 HTTP 缓存策略?按日期,客户端 ETag 比较,还有什么?
编辑:如果数据在一天左右的时间内过时,那很好。再多的话可能会有问题。
【问题讨论】: