发现有时候做非主流还真痛苦。。
现在用的这个vps是centos5 + 免费的kloxo主机管理系统。kloxo用的lighttpd,所以wp-super-cache的那套apache的rewrite规则就完蛋了~
于是搜lighttpd的重写规则,找到了一个老外的帖子, 需要启用mod_magnet(这个模块可以使用lua脚本进行更强大的url重写)
于是我把/etc/lighttpd/lighttpd.conf里mode_magnet的注释删掉
server.modules = (
"mod_rewrite",
"mod_redirect",
"mod_alias",
"mod_access",
"mod_magnet",
... ...
然后
/etc/init.d/lighttpd restart
我得到了下面的错误
mod_magnet plugin init failed
于是我继续google,发现需要重新编译下lighttpd,郁闷了。。
安装lua,发现有现成的包
wget http://packages.sw.be/lua/lua-devel-5.1.4-1.el5.rf.i386.rpm
rpm -i lua-devel-5.1.4-1.el5.rf.i386.rpm
wget http://packages.sw.be/lua/lua-5.1.4-1.el5.rf.i386.rpm
rpm -i lua-5.1.4-1.el5.rf.i386.rpm
Copy Code
yum安装编译工具和其他依赖
yum install gcc glib2-devel autoconf automake libtool openssl-devel pcre-devel bzip2-devel gzip-devel zlib-devel
Copy Code
编译安装lighttpd
wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.25.tar.gz
tar -zxvf lighttpd-1.4.25.tar.gz
cd lighttpd-1.4.25
./configure --with-pcre --with-lua --with-zlib --with-openssl --sbindir=/usr/sbin --sysconfdir=/etc/lighttpd
make
make install
Copy Code
运行完毕,就可以把原有的lighttpd覆盖掉了,再次启用mod_magnet,成功~
然后就是配置这个重写的lua脚本,老外给的那个脚本是有问题的,所以自己又修改了下,大体的配置如下
$HTTP["host"] =~ "^(www.bluehua.org|bluehua.org)" {
#重写开始
server.error-handler-404 = "/index.php"
magnet.attract-physical-path-to = ("/document-root/rewrite.lua")
#结束,就这就两句管用了
.......
} Copy Code
最后我改过的脚本下载:rewrite.lua
总算是好使了。。
由于半路出家,设计模式几乎没有接触,一直为产品代码的耦合头疼,前两天忽然想到,wordpress区区数行代码便实现了强大的插件接口,何不借鉴一下呢,于是便有了下面的假想代码(不了解wordpress插件机制的同学可以先了解一下):
/*
* 以一个相册浏览的产品为例
* 该应用可以实现无刷新的图片浏览,附加功能:新用户引导,图片评论,对图片处理的第三方应用,圈人
*/
//产品引导开始
addAction('photo_browser_init',function()
{
guideManager.init();
});
addAction('photo_load_sucess',function(photo)
{
guideManager.step(3, photo);
});
addAction('photo_change',function(photo)
{
guideManager.step(4);
});
//产品引导结束
//管理员ui开始
addAction('photo_browser_init',function()
{
if ( !currentUser.isAdmin ) return;
......
});
//管理员ui结束
//相册圈人开始
addAction('photo_browser_init', function()
{
photo_tag.init();
});
addAction('photo_load|photo_change', function(photo)
{
photo_tag.update(photo);
});
//相册圈人结束
//相片app
addAction('photo_browser_init',function(photo)
{
photo_apps.init(photo);
});
addAction('photo_load|photo_change',function(photo)
{
photo_apps.update(photo);
});
//相片app结束
//相片评论开始
addAction('photo_browser_init',function(photo)
{
photo_comment.init(photo);
});
addAction('photo_load|photo_change',function(photo)
{
photo_comment.update(photo);
});
//相片评论结束
//相片浏览核心功能开始
var photo_browser = {...};
photo_browser.init();
//相片浏览核心功能结束 Copy Code
其实跟自定义事件有点类似,但是比自定义事件更强大:
- 自定义依赖于对象,对脚本的加载顺序会有要求,而wordpress里的addFilter和addAction可以完美解决这个缺点。
- filter可以实现数据过滤,而自定义事件不能
经过解耦之后的产品更方便多人协作开发,代码块清晰,有效避免svn冲突,还有种种其他好处。。
仅仅是个想法,未经实践,实践ing~
额,没有想像中收获多,多少说一下感受:
- 金同学讲得模板语言,很有新意的架构,但是不适合俺们站的情况。
- 甄同学讲得silverlight qq,漂过,本人对flash了解不多,对silverlight更没有信心。
- 张克军讲《从YUI2到YUI3看前端的演变》,没细听。
- 小明同学讲《前端安全概览及防范》,比较入门,对不太了解这方面的同学会有帮助。
- 秦歌最后分享《前端性能优化与自动化》,很赞,优化方面讲得很全面,但是对于一些大站来说应该都已经注意到了。
嘉宾们讲的都很赞,但是合口味的不多,唉,明年d2一定要在北京开啊,来回火车累个半死