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

结论:

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

在国内的VPS服务器厂商中,阿里云做的很好,所以项目倾向于使用阿里云开放存储服务(aliyun OSS)。

把阿里云存储官方混乱的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 'PUT' -T '1.jpg' 'http://com-163-sinkcup.oss.aliyuncs.com/1.jpg' -H 'Authorization: OSS asdf:qwer' -H 'Content-Type:image/jpeg'

删除文件:

curl -i -X 'DELETE' 'http://com-163-sinkcup.oss.aliyuncs.com/2.jpg'

七牛云存储 API CURL demo:

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

curl -i -F 'file=@2.jpg' -F 'token=asdf' -F 'key=2.jpg' 'http://up.qiniu.com/'

删除文件:

curl -i -X 'POST' -H 'Authorization: QBox asdf' 'http://rs.qbox.me/delete/com-163-sinkcup:1.jpg'

 

可以看出:阿里云存储在技术上比较严谨,使用标准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。

posted @ 2015-02-11 16:25  谦信君  阅读(6094)  评论(0编辑  收藏  举报