結論:html
阿里雲存儲 | 七牛雲存儲 | |
標準:REST、HTTP | 99%符合 | 50% |
基本功能:送二級域名、綁定域名、CDN | 支持 | 支持 |
自定義文件HTTP header | 支持 | 少許支持 |
高級服務:圖片處理 | 不提供 | 很完善地提供 |
收費策略 | 收費 | 小流量免費。大流量收費。 |
官方PHP SDK | 差,依賴亞馬遜http庫,而不是PHP官方PEAR HTTP_Request2 | 差 |
在國內的VPS服務器廠商中,阿里雲作的很好,因此項目傾向於使用阿里雲開放存儲服務(aliyun OSS)。web
把阿里雲存儲官方混亂的PHP SDK 重寫成PEAR,而後做爲apk下載使用。編程
而後想把圖片服務器也遷移到雲存儲,這樣不佔用VPS帶寬。這時候才發現 阿里雲OSS 只有最簡單的文件存儲功能,不支持圖片處理。七牛雲存儲
好比圖片服務器最經常使用的功能:服務器
一、上傳一張原圖,實時自動生成任意分辨率的各類圖片app
好比原圖curl
http://example.com/2.jpg阿里雲
而後請求任意分辨率,請求時服務器自動生成並輸出,好比url
http://example.com/2.jpg?resolution=1280x720code
二、格式自動轉換
好比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。