开发经验:已经有对象储存,为什么我们还要开发一个图片接口?
现在阿里云,腾讯云等等云服务商都已经提供对象储存服务,我们可以使用对象储存来存放文件或者图片。通过云服务商提供的 SDK,一行代码就可以把文件或者图片上传到对象储存,并获得文件的地址。
我的博客图片就使用腾讯云的对象储存作为图床,所以如果你查看图片的地址,会发现他们的网址是这样的:
1 | https://kingname-1257411235.file.myqcloud.com/IMG_5551.JPEG |
其中的https://kingname-1257411235.file.myqcloud.com/
就是我的对象储存的域名。
然而,在公司的项目中,虽然我们也是用云服务商提供的对象储存来存放图片,但是我们会额外开发一个图片服务接口。所以,公司项目网站的图片,使用的地址类似于:https://img.kingname.info/xxx.png
。当你访问这个地址的时候,这个图片服务会从域名拿到图片的名字xxx.png
,然后访问对象储存拿到这张图片,最后再把这种图片以数据流的形式返回给你。
你可能会觉得,这不是多此一举吗?为什么不能让用户直接访问对象储存获得图片呢?单独做一个图片接口不仅增加了开发时间,而且还需要服务器单独再发一次请求到对象储存拿数据,白白增加了访问延迟,怎么看都是得不偿失啊。
这是因为,工程上的问题,有时候不仅仅是一个行与不行的问题。它需要考虑很多额外的因素。