我为img标签创建了一条指令,该指令允许我在API上发出请求。此请求返回了一个arraybuffer,然后将其转换为blob,然后转换为img标签可以使用的URL。
这就是现在的样子:
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