Угловой кеш $http по умолчанию удаляется после изменения маршрута
Я использую Angular по умолчанию $http
кеш в одном из моих сервисов. Когда пользователь переходит от вида к другому (я использую ui-router
), кеш становится недействительным, и все элементы будут удалены из него. Я хочу не делать кэш недействительным в течение всего времени жизни моего приложения.
РЕДАКТИРОВАТЬ: Например, эта фабрика не возвращает кэшированный результат после перехода на другой маршрут, и он вызывает API сервера для получения результата:
cardModule.factory("myFactory", function ($http) {
return {
getAll: function () {
return $http.get("all", { cache: true })
}
}
});
Как запретить кешу по умолчанию удалять элементы из себя после изменения маршрута?
3 ответа
Я нашел источник проблемы. Это была моя вина. У меня где-то был код, который очищает кеш после изменения состояния. Нет проблем с кешем $http по умолчанию.
Я бы оставил это как комментарий, но у меня пока не хватает очков..
Не могли бы вы попробовать какую-то форму запоминания? Другими словами, имейте модель в области, тогда, если модель не определена, вызовите вызов $http? Что-то вроде:
var ctrl = this;
ctrl.product = undefined; // or null
if (ctrl.product === undefined) { // or null
$http.get(...).then(function(resp) {
ctrl.product = resp.data;
};
};
Таким образом, модель инициализируется и вызывается только один раз. Возможным недостатком было бы то, что утверждение if может сделать это неэффективным.
Я не проверял это, просто выдвинул идею. Я также очень заинтересован в этой проблеме.
Это не должно быть связано с ui-router
или же $http
, Вот несколько вещей, которые вы должны подтвердить:
- Ваш сервер (который обслуживает ваши ресурсы) устанавливает заголовок кэша или нет
- Убедитесь, что вы не используете
Ctrl + F5
обновить страницу - Если вы используете браузер Chrome, убедитесь, что настройка
Disable cache
не проверено