2011-12-16 28 views
0

如果我有一個通過終點,如具有發現資源的RESTful服務:REST:什麼是一個好的超媒體和資源緩存策略?

請求:

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比較,別的?

編輯:如果數據陳舊在一天左右的大小,那很好。任何更多可能會有問題。

回答

0

這是一個性能與一致性問題,只能由業務回答。

對於每一個你需要問兩個問題的資源:

  1. 如果資源變化和用戶看不到的X 小時這種變化,什麼是對業務的影響?如果用戶沒有看到溫度變化,反應堆會爆炸嗎?
  2. 查看 該資源的新版本需要多少錢?您是在1Gbps本地網絡上, 還是通過西伯利亞的手機訪問?

一旦您知道如何使數據保持最新以及獲取該數據的成本多少,那麼您可以決定最佳緩存策略。

+0

這是一個很好的觀點。我編輯了我的原始問題以反映陳舊問題。 – Bullines 2011-12-16 21:34:57