轻量级webserver kepler/thttpd/shttpd简单对比
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
最近需要一个简单的webserver,对几个做了下简单对比:
选择时原则如下:
- 支持cgi: 需要用cgilua
- 占用内存少
- 占用cpu资源少
- 最好支持跨平台
1: kepler/xavante
优点:
- 跨平台,支持windows,linux等主流操作系统。
- 由于本身就是用lua写得,该框架对lua的支持非常好。
缺点:对每次请求都是新建一个lua虚拟机,如果是同一个文件多个请求,则会查看以前缓存的虚拟机是否有效,如果有效则仍然采用该虚拟机。
虽然具有回收机制(我也改了代码强制回收),但内存并没见明显下降,所以内存使用会越来越多,直到你所有文件都访问完毕。
2: shttpd
优点:
- 跨平台,支持windows,linux等主流操作系统。
- 代码少(只有3K行)
- 内部支持perl,python,预计下个版本支持lua
缺点:在linux下安装后运行,直接吓了我一跳,用去了10M内存,不用再仔细看了,直接扔掉吧
3: thttpd
优点:代码少,占用内存少
缺点:
- 只能运行在类linux操作系统上
- 只要类似 http://ip/cgi-bin/cgi/xxxx的调用,都直接交给cgi处理了
- 对所有文件都是一次读取完毕,同时缓存下来。
- 不能进行高权限的系统调用,比如说调用如下命令,则不会成功(改了代码,以root用户登陆,不成功)
os.execute("reboot")
本来最倾向于使用kepler/xavante的,但内存从不见回收,只好抛弃,而shttpd在试用时就直接抛弃了,那么就只好采用thttpd,看了下代码,将其对cgi的处理改了一下,对文件的缓存,暂时不予处理(缓存就缓存吧,静态页面一般也不大),而对系统调用就考虑其他方式吧
最后修改后的结果是:除非进行文件上传,否则总共只有1M不到的内存消耗。
由于网页是用cgilua写的,故在windows下就直接用xavante做webserver,嵌入式linux下就改用thttpd了
GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献2条内容
所有评论(0)