在AngularJS中缓存通过$ http获得的图像

时间:2018-10-12 10:11:47

标签: javascript angularjs http angularjs-directive

我为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

0 个答案:

没有答案