Кэширование изображения, полученного с помощью $ http в AngularJS - PullRequest
0 голосов
/ 12 октября 2018

Я создал директиву для моих тегов img, которая позволяет мне сделать запрос на мой API.Этот запрос возвращает мне буфер массива, который я затем преобразую в BLOB-объект, а затем в URL-адрес, который может использоваться тегом img.

Вот как это выглядит прямо сейчас:

            return $http({
          method: "POST",
          cache: true, // doesnt seems to achieve anything
          url: params.url,
          responseType: 'arraybuffer',
          headers: {
            'accept': 'image/webp,image/*,*/*;q=0.8'
          }

        }).then(function (response) {

          var blob = new Blob(
            [response.data], {
              type: response.headers('Content-Type')
            }
          );

          $scope.objectURL = URL.createObjectURL(blob);

        });

Проблема в том, что у меня может быть несколько десятков изображений в одном представлении, использующем эту директиву, и если я перемещаюсь назад и вперед между своими представлениями, эта директива вызывается снова и снова выполняет запросы (что глупо, поскольку я уже имелизображения до).

Конечные точки, на которых я получаю изображения массива, никогда не меняются и выглядят так: myapi / images /: imageID.

Мне нужно, чтобы это было POST, потому что у меня есть дополнительныепараметры для ввода в тело (упрощенный запрос выше)

Поэтому я ищу способ кэширования этих различных вызовов, чтобы мне не приходилось систематически перезагружать изображения.

Спасибо за вашу помощь!

Редактировать: Я забыл упомянуть, что кеш уже присутствует в заголовке ответа конечной точки: Cache-control: public, max-age=604800

...