2011-12-16 4 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. Сколько стоит посмотреть новая версия этого ресурса? Вы находитесь в локальной сети 1 Гбит/с, или получаете доступ к ней с мобильного телефона в Сибири?

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

+0

Это хороший момент. Я отредактировал свой первоначальный вопрос, чтобы отразить вопрос о стойкости. – Bullines

Смежные вопросы