Thinkai's Blog

Autohoutkey|Python|php|aardio|VOIP|IT 爱好者

正在浏览分类 BAE

总共找到 1 篇

Layer CDN 百度BAE3.0上搭建自制CDN 4474

作者为 发表

BAE百度应用开发平台

关于Layer

Layer是一个基于PHP的轻巧的CDN程序,你可以利用Layer快速地为你的博客或者网站搭建自己的CDN,从而加速网站的加载,提升用户体验。Layer由SaeLayerCDN修改而来。

相比SaeLayerCDN,新版Layer的优势在于:

  • 基于SAE/BAE以及本地可写PHP环境,程序免费开源。

  • 可扩展性高,可轻易移植到任何云平台。

  • 防盗链保护,更省流量。

  • URL刷新缓存,轻松维护。

  • 自定义HTTP Host、自定义缓存后缀,极端特殊情况也能轻松使用,方便进行全站CDN。

  • 内存缓存,更高效,更易管理。(开发中)

安装和使用

  • 部署代码:可以上传代码包或通过git/svn部署。

  • 配置程序:如果是手动部署,则要先在SAE后台创建一个storage的domain,或者在BAE后台创建一个bucket,然后右键点击bucket设为公开读属性。然后设置index.php,修改下面的三个常量即可使用(其它特性请自行设置,有详细注解):<?php
    /**
     * 网站静态文件的根目录对应的URL地址
     * */
    define('STATIC_URL','http://www.baidu.com/');

    /**
     * SAE storage的domain(或BAE的bucket)
     * */
    define('DOMAIN','cdn');

    /**
     * 空请求时是否显示本文档
     * */
    define('WELCOME_DOC',TRUE);

  • 使用CDN:将网站模板中静态文件的的根目录URL替换成你的SAE/BAE/PHP应用地址,如将http://blog.creatist.cn/logo.jpg换成http://mysqecdn.sinaapp.com/logo.jpg。对于网站程序的一个建议是,设置一个$cdn_base配置变量,然后静态文件的URL根据$cdn_base生成,以后修改CDN只要配置这个变量就可以了。

  • 最后,刷新你的网站。然后感受网站加载速度的飞跃。


原理

大致就是取静态内容的过程中增加一个CDN层:前端从CDN取静态文件,当该文件是第一次被访问时,CDN从源服务器上取文件并保存到自己的storage里,然后返回给前端;之后就直接从CDN取而不需要再访问源服务器了。这样的好处就是在源服务器端可以实现无痛切换,不用使用像又拍CDN之类的API进行专门的编程,用户资源仍保存在源服务器上,只要将静态资源的前缀改为CDN的网址就行了,当不想使用CDN时可以再改回来。

例如,源文件地址是http://www.creatist.cn/avatar/21223.jpg(或者相对地址/avatar/21223.jpg),前端使用CDN,访问地址改成http://cdnxxx.sinaapp.com/avatar/21223.jpg(这通常是非常容易修改的)。CDN首先检查/avatar/21223.jpg在storage中是否已存在,如果存在即以前已经被访问过的话就直接取出来;如果不存在就从http://www.creatist.cn/avatar/21223.jpg保存到storage,以后就直接从storage里面取了。

CDN层还能实现其他很多功能,例如设置浏览器缓存、防盗链等等。

其他

Layer还在完善中,项目的Github地址是:https://github.com/oott123/Layer,欢迎fork和贡献代码。

SaeLayerCDN的作者的博客是:http://blog.creatist.cn/



好了  介绍完了该讲怎么安装了

一、在百度BAE空间上安装Layer免费CDN程序



1、Layer程序包下载:

1、官网地址:https://github.com/oott123/Layer

Layer-master.zip


2、先在百度BAE空间上创建一个应用。设置好应用域名和应用名称、PHP环境等。

3、复制SVN地址后用TortoiseSVN软件检出内容,然后用下载后的layer全部覆盖。

4、最后到百度BAE中新建一个Bucket。

5、属性设置为公开读就可以了。

百度BAE属性为公开读

6、上传Layer程序包到BAE空间上,可以用在线上传代码包的形式,也可以用SVN、Git等方式。

百度BAE上传代码包

7、修改config.sample.inc.php

<?php
	//Layer CDN 设定
	
	/**********基本设定**********/
	define('STATIC_URL','http://源站地址/');	//源站URL
	define('DOMAIN','云存储名称');	
	define('WELCOME_DOC',TRUE);	//空请求时是否显示欢迎界面
	
	/*********防盗链设定*********/
	//define('ALLOW_REGX','.*');	//设置防盗链允许的[域名]正则表达式,此表达式只匹配referer的域名部分
	define('ALLOW_REGX','^(thinkai\.net|.*\.thinkai\.net|)$');	//允许thinkai.net,*.thinkai.net,浏览器直接访问
	//define('ALLOW_REGX','^(best33\.com|.*\.best33\.com)$');	//允许best33.com,*.best33.com,不允许浏览器直接访问
	//define('ALLOW_REGX','^(.*)$');	//允许任意,允许浏览器访问
	//define('ALLOW_REGX','^(.+)$');	//允许任意,但不允许浏览器访问
	
	/**********进阶设定**********/
	define('PURGE_KEY','tk');	//刷新缓存的密码,访问http://domain/PURGE_KEY/path/to/file来刷新缓存。
	define('MIME','text/html');	//默认MIME类型,可以设为application/octet-stream则对未知项目自动弹出下载。
	define('DIRECT_EXT','php|asp|htm|html');	//不进入缓存的扩展名,安全起见不要删除PHP。
	define('NO_LOCATE',false);	//设置后将不进行跳转而采用read读取方式,可能会降低速度并增加流量。仅当遇到问题时启用。
	define('NO_KEY',true);	//启用后将不再使用一串md5编码的key作为文件名,当想保持文件名一致时启用之。
	define('NO_SECOND_FLODER',true);	//启用后将不再使用两层文件夹存储缓存,仅在本地环境、NO_KEY为假时有效。
	define('STATIC_HOST','');	//可以留空,也可以在这里填写你的源站域名,而在STATIC_URL中填写IP,减少域名解析的时间。
	
	/**********高级设定**********/
	define('RUN_ENV', 'BAE');	
	define('CS_AK','API Key');	//自定义云存储空间的Access Token
	define('CS_SK','Secret Key');	//自定义云存储空间的Secret Token

然后提交修改,在BAE中快捷发布


然后就可以使用了。把你网站的相关资源地址替换成bae的地址就行了。Wordpress可以使用WP Super Cache这个插件。


友情链接:Autohotkey中文论坛Autohotkey中文帮助Autohotkey官网我的B站直播间如若生涯一场梦博客联系作者免GooglePlay APK下载

 主题设计 • skyfrit.com  Thinkai's Blog | 保留所有权利

49 queries in 0.942 seconds |