【问题标题】:REST: What is a good Hypermedia and Resource Caching Strategy?REST:什么是好的超媒体和资源缓存策略?
【发布时间】: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 比较,还有什么?

编辑:如果数据在一天左右的时间内过时,那很好。再多的话可能会有问题。

【问题讨论】:

    标签: http caching rest hateoas


    【解决方案1】:

    这是一个性能与一致性问题,实际上只能由业务部门来回答。

    对于每个资源,您需要提出两个问题:

    1. 如果资源更改并且用户看不到 X 的更改 小时,对业务有什么影响?如果用户没有看到温度变化,反应堆会爆炸吗?
    2. 看一次要多少钱 该资源的新版本?您是否在 1Gbps 本地网络上, 还是在西伯利亚通过手机访问?

    一旦您知道让这些数据保持最新的价值以及获取这些数据的成本,那么您就可以决定最佳的缓存策略。

    【讨论】:

    • 这是一个很好的观点。我已经编辑了我的原始问题以反映陈旧问题。
    猜你喜欢
    • 2013-07-26
    • 2014-10-22
    • 2012-11-01
    • 1970-01-01
    • 2020-02-18
    • 2010-10-31
    • 1970-01-01
    • 2015-06-17
    • 2013-11-15
    相关资源
    最近更新 更多