用Google App Engine做山寨CDN
CDN = Content Delivery Network。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络”边缘”,使用户可以就近取得所需的内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。(内容来自百度百科) CDN多数时候被用来分发一些静态文件(虽然也支持动态文件),比如js, css以及网页里使用的图片,都可以放在CDN上。把静态文件托管在别处好处很多,不仅可以避开浏览器的连接数限制,而且不会发送没用的cookie。更多这方面的心得请看Fenng的旧文。 现在有了Google Appengine,就可以用Google的服务器来存放静态文件,起到CDN的效果。也是我写这篇文章的初衷。在Appengine上托管静态文件极其简单: 第一步,在Appengine上新建一个应用。 第二步,在本地新建项目文件夹,并创建几个用于存放静态文件的目录,如img, javascripts之类的。 第三步,在项目文件夹中创建一个app.yaml文件,内容如下: application: YOUR_APP_ID version: 1 runtime: python api_version: 1 handlers: – url: /img static_dir: img – url: /javascripts static_dir: javascripts – url: /stylesheets static_dir: stylesheets 最后,把要Appengine托管的静态文件放到相应的文件夹,使用appcfg.py 把文件上传到服务器,大功告成。所有加入的静态文件应该已经都能访问了。 我托管了的prototype.js:http://niupucdn.appspot.com/javascripts/prototype.js 需要注意的是,Appengine对文件大小和文件数量都有限制。如果小文件过多(超过了1000),可以考虑采用zip压缩,但也要避免压缩之后文件体积超过1M。 经过我观察,用Appengine托管静态文件也有不足:没有ETag,也无法返回304。只是会在响应头信息里设置10分钟后过期。在这方面可控性太低。 看看后台的图表,感觉很漂亮:

