云存储:阿里云 和 七牛 的比较
结论:
阿里云存储 | 七牛云存储 | |
标准: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对移动互联网省流量特别重要(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。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《介绍一款开源的类Excel电子表格软件》续:七牛云存储实战(C#)
两个月前的发布的博客《介绍一款开源的类Excel电子表格软件》引起了热议:在博客园有近2000个View、超过20个评论。 同时有热心读者电话咨询如何能够在SpreadDesing中实现存储Excel云文件,既通过云方式读取、加载Excel文件。在本文,我们就大家关心的云存储进行实战操练---基于SpreadDesign源码基础。 系统必备: 本文选用的国内比较流行的七牛云存储。 SpreadDesign.exe已经升级为最新的Spread Studio 8.35.20143.0内核 .Netframework 4.0 Windows 8.1 64系统 Visual Studio 2013 社区版 要实现的功能列表如下: 注册七牛云存储账号(有账号的请跳过本节) 七牛云存储 - 主页 http://www.qiniu.com/ (友情给七牛做个宣传,多谢七牛给葡萄城控件提供的七牛云存储优惠券) 七牛云存储的核心团队成员来自于盛大、金山、网龙、惠普等知名互联网公司。核心成员之间已合作多年。公司创始人许式伟先生曾在金山、百度和盛大等公司担任重要领导岗位,具有多年存储行业实战经验,被...
- 下一篇
docker 练习
echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/dockersudo docker run -i -t centos /bin/bash brctl showsudo docker run -i -t --rm --net=none base /bin/bash1.进入root权限sudo su2.停止所有的container,这样才能够删除其中的images:docker stop $(docker ps -a -q)如果想要删除所有container的话再加一个指令:docker rm $(docker ps -a -q)3.查看当前有些什么imagesdocker images4.删除images,通过image的id来指定删除谁docker rmi <image id>想要删除untagged images,也就是那些id为<None>的image的话可以用docker rmi $(docker images | grep "^<none>" | awk "{print $2}")要...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7设置SWAP分区,小内存服务器的救世主
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS关闭SELinux安全模块