用Google App Engine做山寨CDN
来源:百度文库 编辑:神马文学网 时间:2024/03/29 09:53:48
用Google App Engine做山寨CDN
可任意转载,但必须在醒目位置以超链接形式标明文章原始出处和作者信息原文地址:http://www.blogkid.net/archives/2235.html
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: 1handlers:
- 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分钟后过期。在这方面可控性太低。
看看后台的图表,感觉很漂亮:
March 5th, 2009 by 张磊7 Responses to “用Google App Engine做山寨CDN”
- 1初试Sina App Engine
[...] 以前用GAE的时候,写过一篇《用Google App Engine做山寨CDN》。但GAE服务器远在国外,不时被封;并且本身有不少限制(如文件数量不超过1K,单个文件不超过1M等),所以拿来做CDN并不那么爽。注册了SAE账号以后,第一时间就想把GAE上的静态文件们,挪到SAE上来。 [...]
我想问下,这样做有什么好处吗?将一些放在博客上的JS文件改为放在Google上会不会快一点?
Comment on Apr 5th, 2009 at 3:12 PM@小三
Comment on Apr 5th, 2009 at 6:02 PM说实话,在国内是不会快多少的。如果有一台国内服务器会更好。但如果是针对国外的话,放在google那确实可以快很多。
相反的,这样结构的外部链接是不是不能在app engine里使用了呢?
http://niupucdn.appspot.com/javascripts/prototype.js
Comment on Jun 24th, 2009 at 6:04 PM@linsk
Comment on Jun 24th, 2009 at 6:11 PM为什么不行呢?
可能是我没理解好 fetch URL这个东西吧,有点混淆…
深深感到没有天赋…
好吧,顺便再问个问题,你的speedtest mini有记录测试者测试后的数据么?
Comment on Jun 24th, 2009 at 9:15 PM@linsk
Comment on Jun 24th, 2009 at 10:17 PM不会