请问占用资源比较小的 Web 框架有哪些

2021-07-16 12:12:13 +08:00
 Phishion

我的服务器就 512M 内存,想跑一个非常简单的 Web 框架,当然也得有数据库和网页服务器这样的

需求大概就跑一个极少几个人访问的 API 服务,能满足最基本的 POST GET 数据库增删改就成,学习门槛可不要太高。

请问哪些搭配能符合这样的,最好是 Python,PHP 我也可以看看,谢谢各位!

7127 次点击
所在节点    Web Dev
57 条回复
zoharSoul
2021-07-16 15:45:15 +08:00
@SuperMild #15 这可就错了, java 跑满跟玩一样
wizzer
2021-07-16 15:54:19 +08:00
https://budwk.com

选择 V5-mini 单应用版本即可,源码: https://gitee.com/wizzer/NutzWk
keepeye
2021-07-16 15:58:38 +08:00
php 可以试试 lumen,包含数据库和 orm
python 可以用 tornado,不包含数据库,可以直接用 pymysql,反正你没几个访问量
Bromine0x23
2021-07-16 16:18:01 +08:00
labulaka521
2021-07-16 16:21:00 +08:00
数据库记着用 sqlite
jslang
2021-07-16 16:23:11 +08:00
@jslang 最开始以为楼主要 Python 或者 PHP,现在看楼主需求,golang 的 gin 或者 echo 比较满足
jslang
2021-07-16 16:24:29 +08:00
数据库直接 Redis 也可吧,需要关系数据库的话可以 sqlite,或者其它云 mysql 啥的
justrand
2021-07-16 16:26:40 +08:00
php 的话 ci
jin7
2021-07-16 16:27:30 +08:00
go php
also24
2021-07-16 16:37:47 +08:00
『能满足最基本的 POST GET 数据库增删改就成』

那还上框架干啥,直接裸的 php 呗
hushao
2021-07-16 16:46:07 +08:00
python 的话,tornado+sqlite 裸跑,直接 80 端口或者想加一层 nginx 也可以,记得定期重启服务。
lesismal
2021-07-16 16:49:26 +08:00
golang

```golang
package main

import (
"context"
"fmt"
"io"
"net/http"
"os"
"os/signal"
"time"

"github.com/lesismal/nbio/nbhttp"
)

func onEcho(w http.ResponseWriter, r *http.Request) {
data, err := io.ReadAll(r.Body)
if err != nil {
return
}
if len(data) > 0 {
w.Write(data)
} else {
w.Write([]byte(time.Now().Format("20060102 15:04:05")))
}
}

func main() {
mux := &http.ServeMux{}
mux.HandleFunc("/echo", onEcho)

svr := nbhttp.NewServer(nbhttp.Config{
Network: "tcp",
Addrs: []string{":8080"},
MessageHandlerPoolSize: 256,
EnableSendfile: true,
}, mux, nil)

err := svr.Start()
if err != nil {
fmt.Printf("nbio.Start failed: %v\n", err)
return
}

interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)
<-interrupt

ctx, cancel := context.WithTimeout(context.Background(), time.Second*3)
defer cancel()
svr.Shutdown(ctx)
}
```
falcon05
2021-07-16 16:56:44 +08:00
框架倒还好,只要不是 Java 那些重量级的。我以前在搬瓦工 128m 内存的小鸡上还能跑 WordPress,唯一的问题是 mysql 经常 oom 。
rationa1cuzz
2021-07-16 17:23:50 +08:00
python 的话 flask 学习成本很低
fansfans
2021-07-16 18:09:12 +08:00
建议 flask + sqlite3 文档全 demo 多 mysql 有点吃内存
beginor
2021-07-16 20:44:44 +08:00
dotnet5 试一下, 绝对干翻楼上说的这些
d5
2021-07-16 21:20:15 +08:00
推荐使用 fastapi 大佬打包的 docker 镜像,镜像大概 90M,配合 Gtihub Action 做 ci/cd 。性能也不错。

https://github.com/tiangolo/meinheld-gunicorn-flask-docker/tree/master/docker-images

测试站点:
https://surface.wiki/
yeqizhang
2021-07-16 21:26:47 +08:00
512 可能就数据库比较吃紧,我 1g 的树莓派跑了 flask 还跑了另外的 python 脚本 mysql syncthing docker,也能正常用
ttyn
2021-07-16 22:07:49 +08:00
Golang 使用 gin 大概 6M 左右
Node.js 使用 Excpress 大概 15M 左右
dotnetcore 大概 25M 左右
这些都是基础框架启动时的内存,加载 Mysql 数据调用,内存大概增加 10M 的样子,如果还要加其它插件,就不好说了

Golang 是真的小,使用 Alpine 构建镜像也只有 20M 左右
seakingii
2021-07-16 22:19:41 +08:00
占用资源少,首先 是 C ,C ++ ,RUST,其次是 GOLANG

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/789883

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX