Угловой кеш $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, Вот несколько вещей, которые вы должны подтвердить:

  1. Ваш сервер (который обслуживает ваши ресурсы) устанавливает заголовок кэша или нет
  2. Убедитесь, что вы не используете Ctrl + F5 обновить страницу
  3. Если вы используете браузер Chrome, убедитесь, что настройка Disable cache не проверено
Другие вопросы по тегам