Я создал директиву для моих тегов 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