Phishion
V2EX  ›  Web Dev

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

  •  
  •   Phishion · Jul 16, 2021 · 9430 views
    This topic created in 1940 days ago, the information mentioned may be changed or developed.

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

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

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

    57 replies  •  2021-07-19 20:47:08 +08:00
    christopheredwar
    christopheredwar
    Jul 16, 2021
    1
    flask
    0ZXYDDu796nVCFxq
    0ZXYDDu796nVCFxq
    Jul 16, 2021
    2
    API 不是很耗性能(CPU, 内存)的话,你这个量其实不需要考虑占用资源的问题
    Rache1
    Rache1
    Jul 16, 2021
    3
    云函数不更合适吗 😃
    learningman
    learningman
    Jul 16, 2021 via Android
    4
    500m 已经很大了,人家 64m 的都能跑
    tttttv2
    tttttv2
    Jul 16, 2021
    5
    肯定 Node.js 呀,koa, express 简单小巧,或者复杂一点的 egg.js
    ThomasTrainset
    ThomasTrainset
    Jul 16, 2021 via iPhone
    6
    512 已经足够了,几个人访问,跑啥都没问题
    snowfuck
    snowfuck
    Jul 16, 2021
    7
    加点 swap 也行,不用太担心,数据库可以用 sqlite
    Phishion
    Phishion
    OP
    Jul 16, 2021
    8
    好的,谢谢各位,我研究研究
    fkdog
    fkdog
    Jul 16, 2021
    9
    一般量级的 web 服务压力都体现在数据库等网络 IO 上.
    web 框架资源什么的其实挺无所谓的.
    PinkRabbit
    PinkRabbit
    Jul 16, 2021❤️1
    10
    FastAPI
    blockmin
    blockmin
    Jul 16, 2021
    11
    fastapi 一把梭
    jslang
    jslang
    Jul 16, 2021
    12
    fastapi 不错,又快又 restful
    abersheeran
    abersheeran
    Jul 16, 2021❤️1
    13
    楼上推荐 asyncio 框架的可别了,asyncio orm 至今没有一个能打的。还是用 django 、flask 、bottle 这种同步框架吧。
    46fo
    46fo
    Jul 16, 2021
    14
    http.HandleFunc("/", index)
    http.ListenAndServe(":80", nil)
    SuperMild
    SuperMild
    Jul 16, 2021
    15
    我也是用 512M 的服务器,跑着大概 5 个没啥访问量的网站,都是用 Go 写的,估计再加几个都没问题。

    你只跑一个小网站的话,完全不需要考虑资源问题,任何语言任何框架都跑不满 512M 。
    CEBBCAT
    CEBBCAT
    Jul 16, 2021 via Android
    16
    @SuperMild 借楼问一下,有没有用 MySQL 、Redis 或消息队列等等服务?这些服务也会占不少资源吧?
    SuperMild
    SuperMild
    Jul 16, 2021
    17
    @CEBBCAT 都是不对外营业的网站,和楼主说的一样就几个人访问,没必要 Redis,数据库用 sqlite 。
    anzerwall
    anzerwall
    Jul 16, 2021❤️1
    18
    @SuperMild java: ?
    luke2sweet
    luke2sweet
    Jul 16, 2021
    19
    推荐我一个自己的,gin+mysql,go 打包后就 10 几 m 的二进制包,丢服务器上去就能直接运行了,如果嫌 mysql 太大可以换成 sqlite

    https://github.com/lukedever/api-scaffold
    Phishion
    Phishion
    OP
    Jul 16, 2021
    20
    @luke2sweet 收藏了,谢谢
    zoharSoul
    zoharSoul
    Jul 16, 2021
    21
    @SuperMild #15 这可就错了, java 跑满跟玩一样
    wizzer
    wizzer
    Jul 16, 2021
    22
    https://budwk.com

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

    那还上框架干啥,直接裸的 php 呗
    hushao
    hushao
    Jul 16, 2021
    31
    python 的话,tornado+sqlite 裸跑,直接 80 端口或者想加一层 nginx 也可以,记得定期重启服务。
    lesismal
    lesismal
    Jul 16, 2021
    32
    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)
    }
    ```
    GG668v26Fd55CP5W
    GG668v26Fd55CP5W
    Jul 16, 2021 via iPhone
    33
    框架倒还好,只要不是 Java 那些重量级的。我以前在搬瓦工 128m 内存的小鸡上还能跑 WordPress,唯一的问题是 mysql 经常 oom 。
    rationa1cuzz
    rationa1cuzz
    Jul 16, 2021
    34
    python 的话 flask 学习成本很低
    fansfans
    fansfans
    Jul 16, 2021
    35
    建议 flask + sqlite3 文档全 demo 多 mysql 有点吃内存
    beginor
    beginor
    Jul 16, 2021 via Android❤️2
    36
    dotnet5 试一下, 绝对干翻楼上说的这些
    d5
    d5
    Jul 16, 2021
    37
    推荐使用 fastapi 大佬打包的 docker 镜像,镜像大概 90M,配合 Gtihub Action 做 ci/cd 。性能也不错。

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

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

    Golang 是真的小,使用 Alpine 构建镜像也只有 20M 左右
    seakingii
    seakingii
    Jul 16, 2021
    40
    占用资源少,首先 是 C ,C ++ ,RUST,其次是 GOLANG
    seakingii
    seakingii
    Jul 16, 2021❤️1
    41
    我自己会选择 .NET 5 ,它本身就是自带框架,数据库用文件型的 LiteDB,简单好用
    wuwukai007
    wuwukai007
    Jul 16, 2021
    42
    服务器预装 python,flask 10 行起服务
    misaka19000
    misaka19000
    Jul 17, 2021
    43
    Flask + uWsgi + SQLite 最简单的方案
    treizeor
    treizeor
    Jul 17, 2021
    44
    可以跑个 frp 映射本地的服务出去
    narmgalaxy
    narmgalaxy
    Jul 17, 2021
    45
    建议使用 vercle,不用服务器.
    yizmaoaa
    yizmaoaa
    Jul 17, 2021
    46
    如果用 Java 的话可以用 Vert.x,然后用 Graalvm 打包
    fox0001
    fox0001
    Jul 17, 2021 via Android
    47
    512MB 已经非常充裕了。直接考虑 MariaDB + Python3 。至于是 Python3 的哪个 Web 框架,都不是问题。我的 VPS,256MB 内存,照样跑 Blog 、私人 web 服务等
    encro
    encro
    Jul 17, 2021
    48
    @abersheeran

    fastapi,django 都异步支持好好的,咋就不能打了。看着 django 由 50ms 以上变 5ms 内不爽么?
    encro
    encro
    Jul 17, 2021
    49
    不用框架,直接用 headless cms ?
    cyd
    cyd
    Jul 18, 2021
    50
    ? 512m 很大了。我直接跑了 java spring boot + mariaDB + nginx 。还有那个不可描述的东西。
    记得开 swap 就行。我搞了 1G 。
    beyondex
    beyondex
    Jul 18, 2021 via Android
    51
    .NET Core 5
    threeEggs123
    threeEggs123
    Jul 18, 2021 via Android
    52
    aws lambada,然后在上面写 python,按量付费,外面套一个 api gateway 。很便宜,每个月还有免费的额度。
    cloverzrg2
    cloverzrg2
    Jul 19, 2021
    53
    go 的 gin+sqlite3 (几个人访问没啥问题,而且可以随时切到 mysql ),内存占用不会超过 10M 。你说的网页服务器,可以不要,除非你知道你想干啥(多站点路由配置、ssl 证书等需求)
    mengdodo
    mengdodo
    Jul 19, 2021
    55
    @ttyn 感觉 gorilla/mux 就好了,build 后再压缩下更小
    NCE
    NCE
    Jul 19, 2021
    56
    512MB 就老老实实用 php 把,nginx+mysql+slim 之类的轻框架都没什么压力
    aru
    aru
    Jul 19, 2021
    57
    php 很合适的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1628 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 102ms · UTC 10:47 · PVG 18:47 · LAX 02:47 · JFK 05:47
    ♥ Do have faith in what you're doing.