2013-09-08 3 views
1

Мое угловое приложение должно только получать данные с сервера один раз при загрузке приложения, а затем только взаимодействовать с сервером для перезаписи данных. Есть ли рекомендуемый способ реализации этого?Используйте локальные данные с угловым ресурсом

До сих пор я использую $resource.query, чтобы получить исходный набор данных, сохраняя ресурс в службе, и думаю, что теперь мне нужно перезаписать действие GET, но я не уверен, как сделать подавление его связи с сервер.

У меня также есть еще одна веб-служба под названием getLatest, которая делает много работы на стороне сервера, чтобы получить дополнительные записи, которые мне тогда нужно добавить в мой кешированный ресурс. Как я могу это сделать? Я думал о создании вручную экземпляров ресурса как-то из полученных данных, или, возможно, запуская новый (некэшированный) запрос ресурсов после возвращения getLatest вызова (хотя это кажется неэффективным для меня)

ответ

1

Вы можете использовать кэширование с cache:true

.factory('Data', function($resource){ 
     return $resource('http://some.url.of.api', {}, { 
     'get' : { method:'GET', cache: true } 
     }); 
    }) 

Или вы можете реализовать свою собственную фабрику кеша. Читайте больше в документации AngularJS: $resource

+0

Хороший ответ, хотя я отредактировал вопрос вскоре после публикации. Можете ли вы помочь со второй частью вопроса? – wheresrhys

2

@tschiela права, что вы можете использовать свойство cache на ресурсе для кэширования ресурса. Но вы должны понимать стратегии недействительности кэша.

  • Когда нужен кэш refereshed
  • Что происходит, когда данные сервера обновляются.
  • Можете ли вы жить с несогласованностью в данных для всего, что кэшируется.
  • Я не уверен, но выполняет стандартную реализацию $http служебный кэш чести HTTP expiration header (если есть).

Главные заголовки HTTP-заголовков, основанные на заголовках, являются лучшим способом предоставления кеша, поскольку на сервере больше контроля и большинства браузеров для запроса GET.

+0

Хорошая точка, хотя для моих текущих потребностей (приложение только для меня используется) согласованность данных не должна быть проблемой – wheresrhys

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