web应用软件和WebAPI程序化常以同步方式执行请求常用 web访问流从请求者访问远程服务开始远程服务转而处理请求并快速返回结果
但有时网络应用需要在后台异步执行动作
举个例子 计算密集 web请求这样的请求可能需要很长时间完成UI智慧,你可能不希望用户主动等待这么久完成命令从技术上讲,如此长运行HTTP请求甚至可能完全超时
在这种情况下,你可能想使用不同的存取流流中,当请求者访问远程服务时,远程服务会立即返回并产生“等待”结果远程服务继续后台执行动作最后,远程服务完成后,它会通知请求者所需动作已完成
同样的概念适用于云管理APIs
云化单片同步举个例子,如果想变换图像,你必须同步等待转换完成
博客文章中我们想介绍云化新通知和后台处理能力,
多移动和网络应用上传图像和文件可从服务后端或直接从用户浏览器或移动应用实现上传遇此情形,您可能想确认上传完成后通知您的服务器 。
设置程序可实现此目的
notification_url云性参数上传API到任何有效HTTP(或HTTPS)公共URL
例例PHP
Uniteddader:Upload (sample.jpg)数组
上传完成后,HTTPPOST请求将发送到通知URL日志数据将包含所有上传结果细节-由上传API返回(公共ID、URLs、图像维度、语义数据-应请求多加)。请求中还包含寄送数据签名,以便验证发送者
Post样本请求和JSON上传结果
POST /my_notification_endpoint HTTP/1.1 X-Cld-Timestamp: 1368881627 X-Cld-Signature: 29a383e289bc569310a8ca9899019a3167b4909e Content-Type: application/json {"public_id":"djhoeaqcynvogt9xzbn9","version":1368881626,"width":864,"height":576,"format":"jpg","resource_type":"image","created_at":"2013-05-18T12:53:46Z","bytes":120253,"type":"upload","url":"https://res.www.agrosoland.com/1233456ab/image/upload/v1368881626/djhoeaqcynvogt9xzbn9.jpg","secure_url":"https://cloudinary-a.akamaihd.net/1233456ab/image/upload/v1368881626/djhoeaqcynvogt9xzbn9.jpg"}
签名计算如下:
SHA1-Hex-Digest("{data}{timestamp}{api_secret}")
服务器应用程序可用此通知更新上传图像模型和数据库或清理未使用上传文件
Ruby on Rails生成文件输入字段用jQuery插件执行浏览器直接上传
Cl_image_upload_tag/
默认时,当访问云式交付URL时,变换图像根据变换参数,如果不存在则动态生成也可以使用云形
热切变换时热切生成多变图像并上传,以备快速交付,即使第一次下载请求也是如此
有时,你可能需要创建单时变换或多热切变换上传图像创建这种变换可能需要几秒时间,特别是原创图像大得分在这种情况下,你可能不希望用户等待进程完成
使用云形异步求变换, 上传时定义多重热变换上传请求将立即返回,变换由云化执行,变换准备后通知你(如果需要)
通过设置新程序可启动异步热切变换
热切asyncAPI参数上传
真实性.并设置可选性
eager_notification_url完成变换生成后接收 HTTPPOST请求
Python(或Django)的下例在后台热切地产生多重变换
云性.uploader.uploade/sample.jpg/
通知后请求可能长得像:
POST /my_notification_endpoint HTTP/1.1 X-Cld-Timestamp: 1368883736 X-Cld-Signature: 09ef8c16f6e0ff85f5345d4813973de8f746448d Content-Type: application/json {"batch_id":"c0ed79e610f0636d15a1353a0a866933","notification_type":"eager","eager":[{"width":150,"height":100,"url":"https://res.www.agrosoland.com/1233456ab/image/upload/c_fill,h_100,w_150/v1368883730/noapoaq60varndxnh2or.jpg","secure_url":"https://cloudinary-a.akamaihd.net/1233456ab/image/upload/c_fill,h_100,w_150/v1368883730/noapoaq60varndxnh2or.jpg"},{"width":432,"height":288,"url":"https://res.www.agrosoland.com/1233456ab/image/upload/c_scale,e_sepia,w_0.5/v1368883730/noapoaq60varndxnh2or.jpg","secure_url":"https://cloudinary-a.akamaihd.net/1233456ab/image/upload/c_scale,e_sepia,w_0.5/v1368883730/noapoaq60varndxnh2or.jpg"}]}
云化支持
生成图案:多图像合并成单大图像,使用生成动态CSS提高浏览器加载效率
有时你可能想把数以万计或数以百计图像合并成单图象
云化图像变换快速高效,但变换并合并如此多图像可能需更多时间才能等待API客户端请求遇此情况HTTP请求超时可能发生
现在可以通知云化用设置后台来演化图案代
asyncAPI参数
真实性.并设置
notification_url参数接收进程完成时 webook请求
Ruby实例请求后台执行图例生成
云形:Uploader.generate_sprite
=> {"status"=>"processing", "batch_id"=>"163a919cde8f9317d6ee0fbfe6375dc4"}
API立即返回并回复下文,而后通知将包括最终生成图例细节
POST /my_notification_endpoint HTTP/1.1 X-Cld-Timestamp: 1368882586 X-Cld-Signature: d91bccba5f1bb38905fc6a9284914e8959fb4a7b Content-Type: application/json {"batch_id":"f97c6bf03074d9641f1a9c9b6bcebef7","css_url":"https://res.www.agrosoland.com/1233456ab/image/sprite/c_fill,h_100,w_150/v1368882583/faces.css","image_url":"https://res.www.agrosoland.com/1233456ab/image/sprite/c_fill,h_100,w_150/v1368882583/faces.png","secure_css_url":"https://cloudinary-a.akamaihd.net/1233456ab/image/sprite/c_fill,h_100,w_150/v1368882583/faces.css","json_url":"https://res.www.agrosoland.com/1233456ab/image/sprite/c_fill,h_100,w_150/v1368882583/faces.json","version":1368882583,"image_infos":{"face_center_eer8ss":{"width":150,"height":100,"x":0,"y":0},"face_left_b7ikxf":{"width":150,"height":100,"x":152,"y":0},"face_top_usjwvk":{"width":150,"height":100,"x":0,"y":102},"front_face_cywiib":{"width":150,"height":100,"x":152,"y":102}},"notification_type":"sprite"}
可以相似方式创建动画GIF或多页PDF文档
外加多片图片表示全页所有这一切都使用云式'
多维并'
爆炸方法设置
async参数切换
真实性可选设置
notification_url.Ruby例子如下:
Oploader.multi
云度:Uploder.exlode (multi_page_pdf),:format_png
和往常一样,我们云化的目标是解决所有网络手机应用图像管理 和图像变换方面 并让你关注核心业务逻辑
开发者,你可能熟悉管理后台处理和推送通知的复杂性云形新网图和在后台异步执行计算密集图像变换能力 将证明对图像管理工具带非常有用
急切地想听听你对这些新特征的反馈确定下方注释线程中划线