用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: 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分钟后过期。在这方面可控性太低。

看看后台的图表,感觉很漂亮:

March 5th, 2009 by 张磊

7 Responses to “用Google App Engine做山寨CDN”


  1. 1小三

    我想问下,这样做有什么好处吗?将一些放在博客上的JS文件改为放在Google上会不会快一点?

    Comment on Apr 5th, 2009 at 3:12 PM  
  2. 2张磊

    @小三
    说实话,在国内是不会快多少的。如果有一台国内服务器会更好。但如果是针对国外的话,放在google那确实可以快很多。

    Comment on Apr 5th, 2009 at 6:02 PM  
  3. 3linsk

    相反的,这样结构的外部链接是不是不能在app engine里使用了呢?

    http://niupucdn.appspot.com/javascripts/prototype.js

    Comment on Jun 24th, 2009 at 6:04 PM  
  4. 4张磊

    @linsk
    为什么不行呢?

    Comment on Jun 24th, 2009 at 6:11 PM  
  5. 5linsk

    可能是我没理解好 fetch URL这个东西吧,有点混淆…
    深深感到没有天赋…

    好吧,顺便再问个问题,你的speedtest mini有记录测试者测试后的数据么?

    Comment on Jun 24th, 2009 at 9:15 PM  
  6. 6张磊

    @linsk
    不会

    Comment on Jun 24th, 2009 at 10:17 PM  
  1. 1初试Sina App Engine

    [...] 以前用GAE的时候,写过一篇《用Google App Engine做山寨CDN》。但GAE服务器远在国外,不时被封;并且本身有不少限制(如文件数量不超过1K,单个文件不超过1M等),所以拿来做CDN并不那么爽。注册了SAE账号以后,第一时间就想把GAE上的静态文件们,挪到SAE上来。 [...]