什么是 SAE

SAE 是 Sina App Engine 的缩写,类似于 GAE,但考虑到 GAE 的被墙以及国内访问速度,开始玩起 SAE。从目前看来,SAE 的速度还是很赞的,渣浪的 CDN 还是有优势。

在SAE使用Python

SAE 支持 python 应用,其预装模块列表可见http://sae.sina.com.cn/?m=devcenter&catId=290。

使用web.py

SAE 有项独创的 NoSQL 服务 KVDB,跟 MongoDB 类似,Key-Value 数据库,其分布式的特性比较适合国内的网络坏境。于是随手做了个用 KVDB 分享小文件的应用,命名为 文件罐,python的web框架百家争鸣,但本着不折腾会死轮子一定要自己造的心态,我还是选择了最轻量级的web.py。

使用SAE公共JS库

为什么用公共JS库?

  1. 享受 CDN 加速,加载 js 速度快。
  2. 如果其他网站也用公共 JS 库,那么用户访问过其他网站后访问我们的网站会有 JS 缓存(因为URL一样,浏览器会认为是同一个文件。),减少TCP握手次数,用户友好。

考虑到 Google 公共库的不稳定性,采用 SAE JS库 来作为 JQuery 的载点。

最终效果

地址:文件罐http://filecup.sinaapp.com
原理很简单,把上传的文件作为Value的值,将当前时间进行md5运算生成 TimeStamp 作为 Key 值,存入 kvdb,下载文件时则按Key值取出文件内容发送给客户端。为了偷懒,直接用了 Twitter 的 Bootstrap 作为前端框架。