У меня есть приложение AngularJS, и я хочу кэшировать ответы службы REST. Я нашел некоторые библиотеки, такие как angular-cached-resource, которые могут сделать это, сохранив данные в локальном хранилище веб-браузера.Стратегия кэша службы REST с AngularJS
Но иногда я выполняю вызовы POST/PUT/DELETE REST, а затем некоторые из предыдущих запросов кэша службы REST необходимо выполнить снова. Таким образом, кажется, что можно удалить кешированные ответы, а затем вызов будет отправлен на сервер в следующий раз.
Но как насчет того, посылает ли сервер в HTTP Header
некоторые значения, такие как expires
или etag
? Я должен прочитать HTTP-заголовок и отреагировать сам или есть библиотека в AngularJS, которая также может справиться с этим?
Поэтому, если я должен ударить по серверу и не читать кеш локального хранилища, зависит от полей кэша заголовка HTTP и если есть какие-либо вызовы PUT/POST/DELETE, которые имеют ответ, например, «перезагрузка каждого элемент пользовательских настроек ". Поэтому я должен принять этот ответ и создать карту, которая говорит мне, что, например, REST-сервисы A, C и F (связанные с настройками параметров пользователя) должны снова попасть на сервер в следующий раз, когда они будут выполнены, или если Cache истекает из HTTP Заголовки.
Возможно ли это с помощью библиотеки AngularJS или у вас есть другие рекомендации? Я думаю, что это похоже на Observer или PubSub Pattern, не так ли?
Еще одна вещь: Возможно ли иметь что-то вроде PubSub без использования кеша/локального хранилища (так же, как и управления кэшем заголовка HTTP)? Поэтому я не могу вызвать службу REST, потому что тогда она попадет на сервер, чего я не хочу в некоторых случаях (ответ от предыдущего вызова REST, который возвращает мне событие «перезагрузка каждого элемента пользовательских настроек»).
Вы можете сделать это с помощью паба/подпрограммы. Пожар события с ответом возвращается из запроса post/put/del, а слушатели в сервисах ждут их, затем выполняют запрос GET. – reptilicus
Да, но, возможно, мне не нужно немедленно звонить с REST, потому что элемент страницы, который необходимо перезагрузить, не отображается/на той же веб-странице. – Tim
То, как мы это делаем, - это прослушивание события в службе, например userOptionsService, и когда отправляется POST, выполните перезагрузку в userOptionsService, а затем в контроллере загрузите данные, которые хранятся в userOptionsService.userOptions – reptilicus