Можете ли вы установить время истечения срока действия для Angular $http-кеширования по умолчанию? Я бы хотел, чтобы URL-адрес оставался в кеше в течение 1 минуты, так что любые запросы, сделанные после 1 минуты, захватывают свежие данные с сервера.
Время истечения таймаута URL-адреса AngularJS $http
Ответ 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'}
}
)