欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

云存储:阿里云 和 七牛 的比较

程序员文章站 2022-05-20 14:54:33
...
结论:
阿里云存储 七牛云存储
标准:REST、HTTP 99%符合 50%
基本功能:送二级域名、绑定域名、CDN 支持 支持
自定义文件HTTP header 支持 少量支持
高级服务:图片处理 不提供 很完善地提供
收费策略 收费 小流量免费。大流量收费。
官方PHP SDK 差,依赖亚马逊http库,而不是PHP官方PEAR HTTP_Request2

把阿里云存储官方混乱的PHP SDK 重写成PEAR,然后作为apk下载使用。

然后想把图片服务器也迁移到云存储,这样不占用VPS带宽。这时候才发现 阿里云OSS 只有最简单的文件存储功能,不支持图片处理。

比如图片服务器最常用的功能:

1、上传一张原图,实时自动生成任意分辨率的各种图片

比如原图

http://example.com/2.jpg

然后请求任意分辨率,请求时服务器自动生成并输出,比如

http://example.com/2.jpg?resolution=1280x720

2、格式自动转换

比如http://example.com/2.jpg?format=png

由于阿里云存储不支持图片功能,所以不能用了。考虑迁移到七牛。

参考七牛官方PHP SDK,重写成PHP PEAR包,发现七牛API不是REST。

API对比如下:

阿里云存储 七牛云存储
上传文件 HTTP PUT 资源URI HTTP POST up.qiniu.com
删除文件 HTTP DELETE 资源URI HTTP POST rs.qbox.me
认证 HTTP header Authorization 一会儿使用HTTP header Authorization,一会儿使用POST token

阿里云存储 API CURL demo:

上传文件:

curl -i -X  -T   -H  -H 

curl -i -X  

七牛云存储 API CURL demo:

上传文件(可以看出七牛把bucket放在token认证中,技术上导致七牛无法实现“公共上传”):

curl -i -F  -F  -F  

curl -i -X  -H  

可以看出:阿里云存储在技术上比较严谨,使用标准REST。七牛有的地方不再使用token,使用了HTTP header Authorization,可能正在改进。

图片功能对比如下:

阿里云存储 七牛云存储
自动生成任意分辨率 支持
自动生成任意格式 支持
webp 支持,可节约app大量流量

七牛的图片demo:

原图 103KB:http://com-163-sinkcup.qiniudn.com/6ffe255fab20747c8872638870268703

自动生成jpg 79KB:http://com-163-sinkcup.qiniudn.com/6ffe255fab20747c8872638870268703?imageMogr/v2/auto-orient/thumbnail/1366x768/quality/80/format/jpg

自动生成webp 23KB:http://com-163-sinkcup.qiniudn.com/6ffe255fab20747c8872638870268703?imageMogr/v2/auto-orient/thumbnail/1366x768/quality/80/format/webp

由于七牛提供的图片功能及其强大,支持webp对移动互联网省流量特别重要(Android、ios app省70%流量),而且七牛使用go语言,还写了本书(《Go语言编程》豆瓣),说明技术上实力很强,以后会支持REST的,所以最后决定使用 七牛云存储。

阿里云和七牛的PHP SDK都一样不规范,没法用,只能重写。我重写好了,在这里:

七牛云存储PHP PEAR包下载:http://www.cnblogs.com/sink_cup/p/PHP_PEAR_Services_Qiniu.html

阿里云存储PHP PEAR包下载:http://www.cnblogs.com/sink_cup/p/PHP_PEAR_Services_Aliyun_OSS.html

阿里云存储1%不符合标准的地方:

自定义HTTP header使用了小写,不符合HTTP常识。比如阿里云使用x-oss-acl是错误的,应该使用X-Oss-Acl。