七牛云存储的使用心得

蝉游记的图片和静态资源都是使用七牛云存储,七牛提供了很多方便开发人员的存储特性,省去了大量的基础架构搭建和开发时间,记录一下在近半年使用过程中的心得。

1. 客户端自传
常见的云存储上传文件流程一般如下:
用户 => 应用服务器 => 云存储提供商
这样多了一次上传的流程,和本地存储相比,会相对慢一些。

而七牛提供了客户端自传的功能,流程可以改成:
用户 => 七牛 => 应用服务器
用户直接上传到七牛的服务器,通过DNS智能解析,七牛会选择到最近的最合适的ISP服务商节点,速度会比原先快很多,上传成功以后,七牛的服务器使用回调功能,只需要将非常少的数据(比如key)post回应用服务器,应用服务器进行保存即可。

使用该项功能以后,蝉游记的上传速度经常被用户赞。

2. 回调功能+图像处理接口
因为蝉游记是以图片为主的游记记录工具,需要记录很多图片信息,比如宽高,exif的拍摄时间,经纬度等。在使用七牛之前,我们用ImageMagick对用户上传的图片进行处理,而通过七牛提供的回调功能,可以添加自定义参数,在用户上传文件成功以后,在七牛的服务器上执行相关操作,将结果post回来即可。以高宽为例子,只需要添加如下参数就完成了:

width=$(imageInfo.width)&height=$(imageInfo.height)



通过这个改进,我们自己的服务器无需进行任何的图像处理工作,节约了大量的IO和CPU资源。

3. 缩略图
我们设置了5种不同大小规格的图片,根据用户的显示分辨率不同用不同的图片,达到下载速度和显示体验的最佳搭配,而七牛的缩略图定义非常方便,只需要在七牛的后台web界面进行定义:


然后在不同的url后面添加后缀即可,以这篇游记中的图片为例:
http://chanyouji.com/trips/26132#nt/824288

用前面定义的display做后缀,就是800的:
http://cyj.qiniudn.com/26132/1361648096426p17k483tdvikvpoq14tu1ssr13ssp.jpg-display

而改一下后缀display_ll,这张就变成500的:
http://cyj.qiniudn.com/26132/1361648096426p17k483tdvikvpoq14tu1ssr13ssp.jpg-display_ll

通过这个特性,我们还能够特别真对高清的ipad屏幕,输出最大规格的图片,让用户在浏览的时候有最好的视觉体验。

4. 镜像存储(源站加速)
除了云存储以外,七牛还支持传统CDN的镜像存储,只需要在后台配置一下源站即可:


然后只需要在rails的配置文件里面修改一下 config.action_controller.asset_host , 蝉游记网站上的js和css等静态资源就很方便地迁移过来了。

除了上面提到的几个特性外,我们还使用了图片自动旋转、缩略图预生成等七牛独有的特性,而这些特性不少都是我们实际使用过程中遇到的需求,然后他们很快就实现并且上线了。总之七牛云存储提供了各种便捷的功能,如果你的应用有大量的存储或者图片处理需求,不妨试用看看了。

猜你喜欢

转载自quake.iteye.com/blog/1816807