REST: Что такое хорошая стратегия гипермедиа и кэширования ресурсов? - PullRequest
0 голосов
/ 16 декабря 2011

Если у меня есть служба 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 сравнения, что-то еще?

РЕДАКТИРОВАТЬ: если данные устарели в день или около того, это нормально. Больше, вероятно, будет проблематично.

1 Ответ

0 голосов
/ 16 декабря 2011

Это проблема производительности и согласованности, на которую действительно может ответить только бизнес.

Для каждого ресурса вам нужно задать два вопроса:

  1. Если ресурс меняется и пользователи не видят этого изменения в течение X часов, как это повлияет на бизнес?Будут ли реакторы взрываться, если пользователь не увидит изменения температуры?
  2. Сколько стоит посмотреть новую версию этого ресурса?Вы подключены к локальной сети 1 Гбит / с или получаете доступ к ней с мобильного телефона в Сибири?

Как только вы узнаете, насколько ценно иметь эти данные в актуальном состоянии и сколько их стоит получитьЗатем вы можете выбрать лучшую стратегию кэширования.

...