最近需要一个简单的webserver,对几个做了下简单对比:
选择时原则如下:
1: kepler/xavante
优点:
缺点:对每次请求都是新建一个lua虚拟机,如果是同一个文件多个请求,则会查看以前缓存的虚拟机是否有效,如果有效则仍然采用该虚拟机。
虽然具有回收机制(我也改了代码强制回收),但内存并没见明显下降,所以内存使用会越来越多,直到你所有文件都访问完毕。
2: shttpd
优点:
缺点:在linux下安装后运行,直接吓了我一跳,用去了10M内存,不用再仔细看了,直接扔掉吧
3: thttpd
优点:代码少,占用内存少
缺点:
os.execute("reboot")
本来最倾向于使用kepler/xavante的,但内存从不见回收,只好抛弃,而shttpd在试用时就直接抛弃了,那么就只好采用thttpd,看了下代码,将其对cgi的处理改了一下,对文件的缓存,暂时不予处理(缓存就缓存吧,静态页面一般也不大),而对系统调用就考虑其他方式吧
最后修改后的结果是:除非进行文件上传,否则总共只有1M不到的内存消耗。
由于网页是用cgilua写的,故在windows下就直接用xavante做webserver,嵌入式linux下就改用thttpd了