七牛云存儲內建了一個非常高效易用的數據處理框架。數據處理框架可以管理和執行一系列符合規范的數據處理操作(fop)。開發者可以在訪問資源時制定執行一個或多個數據處理指令,以直接獲取經過處理后的結果。
比較典型的一個場景是圖片查看。客戶端可以上傳一張高精度的圖片,然后在查看圖片的時候根據屏幕規格生成一張大小適宜的縮略圖,比如為iPhone生成一張960x640大小的縮略圖。這樣既可以明顯降低網絡流量,而且可以提高圖片顯示速度,還能降低移動設備的內存占用。而要達到這樣的效果非常簡單:
原圖([鏈接](http://qiniu-images.qiniudn.com/gogopher.jpg)):
~~~
http://qiniu-images.qiniudn.com/gogopher.jpg
~~~
針對該原圖獲取一個適合iPhone5屏幕尺寸的圖片([鏈接](http://qiniu-images.qiniudn.com/gogopher.jpg?imageView/2/w/640/h/960)):
~~~
http://qiniu-images.qiniudn.com/gogopher.jpg?imageView/2/w/640/h/960
~~~
我們可以再定義圖片樣式比如叫iphone5,以縮短URL并提高可讀性([鏈接](http://qiniu-images.qiniudn.com/gogopher.jpg-iphone5)):?`http://qiniu-images.qiniudn.com/gogopher.jpg-iphone5`
一個常規的數據處理操作包含一個操作指令和若干操作參數,如下所示:
~~~
<fop>/<param1_value>/<param2_name>/<param2_value>/...
~~~
數據處理框架對于資源類型并沒有限制,但是特定某個數據處理操作則會有各自適合的處理對象,比如對非圖片類型的資源類型上應用縮略圖操作可能會返回錯誤的結果。
數據處理操作的觸發有以下幾個機會和方式:
1. 訪問資源時。如上面的例子所示范的,只需要在資源URL后加上具體數據操作指令和參數即可。
2. 資源上傳時。上傳時可在上傳策略中設置異步數據處理,在資源上傳完成時七牛云存儲會以異步的方式執行數據處理操作,并持久化存儲數據處理結果。支持查詢數據處理操作的進度。具體請參見[上傳后續動作 - 數據預處理](http://developer.qiniu.com/docs/v6/api/overview/up/response/persistent-op.html)。
3. 對已有資源手動觸發處理流程。與上傳時的數據處理支持相同,這個過程也為異步且可查詢操作進度。具體請參見[處理結果持久化](http://developer.qiniu.com/docs/v6/api/overview/fop/persistent-fop.html)。