0

次のようなエンドポイントを介して検出可能なリソースを持つ 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>

そして、この応答で、クライアントはハイパーメディア リンクの 1 つをたどることができます。

リクエスト:

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>

最初の回答はあまり頻繁に変更されず (例: 何ヶ月も)、2 番目の回答は少し頻繁に変更される場合があります (例: 毎月程度)。この種のシナリオに適した HTTP キャッシュ戦略は何ですか。日付別、クライアント ETag 比較、その他の何か?

編集: データが 1 日程度古い場合は問題ありません。それ以上はおそらく問題になるでしょう。

4

1 に答える 1

0

これは、パフォーマンスと一貫性の問題であり、実際にはビジネスでしか解決できません。

リソースごとに、次の 2 つの質問をする必要があります。

  1. リソースが変更され、その変更がユーザーに X 時間表示されない場合、ビジネスにどのような影響がありますか? ユーザーが温度変化を確認しない場合、原子炉は爆発しますか?
  2. そのリソースの新しいバージョンを見るのにいくらかかりますか? 1 Gbps のローカル ネットワークを使用していますか、それともシベリアの携帯電話からアクセスしていますか?

そのデータを最新の状態に保つことの価値と、そのデータを取得するのにかかる費用がわかれば、最適なキャッシュ戦略を決定できます。

于 2011-12-16T19:03:44.857 に答える