Подтвердить что ты не робот

Время истечения таймаута URL-адреса AngularJS $http

Можете ли вы установить время истечения срока действия для Angular $http-кеширования по умолчанию? Я бы хотел, чтобы URL-адрес оставался в кеше в течение 1 минуты, так что любые запросы, сделанные после 1 минуты, захватывают свежие данные с сервера.

4b9b3361

Ответ 1

Невозможно установить время истечения срока действия. Но вы можете сделать это вручную. Вы должны получить доступ к кешу $http:

var cache = $cacheFactory.get('$http');

и удалите URL-адрес, который кэшируется:

cache.remove(theUrl);

Подробнее см. .

Ответ 2

в соответствии с этот сайт - это $cacheFactory спецификации

  • Хранение Память кучи Javascript
  • Алгоритм высева Наименее недавно используемый (LRU)
  • Время жизни до обновления страницы
  • Поддержка повторной аттестации Нет
  • Требуется сотрудничество с удаленным сервером Нет

Ответ 3

Другое решение:

Используйте $httpProvider для подключения запроса.

http_ttl_cache = {}  # save the last cache time
MyApp.config ['$httpProvider', ($httpProvider) ->
    $httpProvider.interceptors.push ['$cacheFactory', ($cacheFactory) ->
        request: (config) ->
            if config.params and config.params.__cache__
                config.cache = true

                N = config.params.__cache__
                delete config.params.__cache__

                if moment() - (http_ttl_cache[config.url] or 0) > 1000 * N     
                    cache = $cacheFactory.get('$http')                            
                    cache.remove(config.url)                                      
                    http_ttl_cache[config.url] = moment()
            return config
    ]
]

В вашем контроллере:

$http.get("/api/books?limit=100", 
          {
               params: {'__cache__': 600, 'your other param': 'value'}
          }
)