2014-10-27 3 views
1

мне было интересно, чтобы сделать «RESTful API» вы должны удовлетворять 6 архитектурных ограничений, перечисленных ниже:Использование HTTP для REST API: автоматически кэшируется?

http://en.wikipedia.org/wiki/Representational_state_transfer#Architectural_constraints

Безопасно ли утверждать, что, когда вы создаете REST API по протоколу HTTP , ограничение «кэшируемого» автоматически выполняется? Поскольку HTTP уже предоставляет кеш-систему «из коробки» через HTTP-заголовки: http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html

Так что не нужно больше беспокоиться об этом?

Возможно, это звучит как глупый вопрос, но я хочу быть уверенным. :-)

С уважением!

К.

ответ

2

Позволь мне расширить немного на проблемах создание правильной логики кэширования: Обычно бэкэнд API представляет собой базу данных, содержащую всевозможные небольшие фрагменты информации. Типичная презентация в REST API может быть накопленным представлением (так, скажем, журнал активности пользователей, содержащий список последних действий пользователя в портале, что-то вдоль этих строк). Теперь, чтобы узнать, изменился ли ваш URL-адрес API/пользователя/123/activity (после отметки времени, которую клиент отправляет вам в «If-modified-since» -header), вам нужно будет проверить, были ли любые дополнительные действия после последнего запроса. Накладные расходы на это могут быть такими же, как просто получение результата снова. Таким образом, во многих случаях люди просто не беспокоятся, что является позором, поскольку правильное кэширование может иметь огромное влияние на производительность веб-приложения.

Может быть, это дает немного больше деталей, Jan

+0

Я вижу, спасибо за разъяснение! :-) В Интернете есть много материалов о том, как правильно кэшировать ресурсы через HTTP, чтобы помочь мне дальше. – Braek

2

Вы правильны, HTTP уже дает вам средства для идентификации Cacheable элементов, но, как ваш API будет генерироваться некоторыми серверной логики, вы все равно должны убедиться, что код «за «ваш API будет иметь правильные заголовки HTTP и быть готовым и способен реагировать на запросы« If-modified-since »в идеальном мире. Создания надежного «Last-Modified» метка времени, а также проверка против надежно на самом деле тихого подвига ;-)

Надеется, что это помогает немного, Jan

+0

Спасибо! :-) Что вы подразумеваете под «довольно подвигом»? Что это задача для реализации этого? – Braek

+0

Задача состоит в том, что время проходит, и есть сетевая задержка - а также внешние факторы - для проверки подлинности метки времени. Также есть проблемы с безопасностью. –

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