V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
azev
V2EX  ›  问与答

需要搭个小的 web 应用,什么技术栈做出来速度快又省内存?

  •  1
     
  •   azev · 2020-11-10 13:47:28 +08:00 · 6843 次点击
    这是一个创建于 1508 天前的主题,其中的信息可能已经有所发展或是发生改变。

    客户的云主机配置不高 已经搭了几个服务了
    springboot,flask,php,dotnet core 。选哪个呢?

    64 条回复    2020-11-11 17:44:29 +08:00
    tanjnr
        1
    tanjnr  
       2020-11-10 13:51:33 +08:00 via iPhone
    Php,我的单核 1G,部署完应用还剩 300M+内存
    azev
        2
    azev  
    OP
       2020-11-10 14:02:03 +08:00
    @tanjnr 多谢 用什么框架了吗?
    putaozhenhaochi
        3
    putaozhenhaochi  
       2020-11-10 14:12:09 +08:00   ❤️ 6
    dotnet core
    Rekkles
        4
    Rekkles  
       2020-11-10 14:13:11 +08:00
    PHP 呗 一天环境一周开发半天上线 内存 1G 够跑
    HuHui
        5
    HuHui  
       2020-11-10 14:23:02 +08:00
    go gin
    azev
        6
    azev  
    OP
       2020-11-10 14:23:57 +08:00
    @putaozhenhaochi 多谢 这个有点意外 是自身经验吗?
    xman99
        7
    xman99  
       2020-11-10 14:29:41 +08:00
    小项目 php 还不错
    renmu123
        8
    renmu123  
       2020-11-10 14:31:45 +08:00 via Android   ❤️ 1
    看你多小,我推荐 fastapi,贼快贼爽
    icyalala
        9
    icyalala  
       2020-11-10 14:33:19 +08:00
    速度快省内存当然是 go
    wuzhanggui
        10
    wuzhanggui  
       2020-11-10 14:37:35 +08:00
    我也推荐 fastapi,我的小站全是用它写的,写小项目超快
    imjamespond
        11
    imjamespond  
       2020-11-10 14:42:17 +08:00
    c,内存可以小于 1M
    tanjnr
        12
    tanjnr  
       2020-11-10 14:44:06 +08:00 via iPhone
    这跟框架关系不大,我用的自研框架。
    ashong
        13
    ashong  
       2020-11-10 14:44:09 +08:00 via iPhone
    civet
    rogwan
        14
    rogwan  
       2020-11-10 14:44:19 +08:00 via Android
    @wuzhanggui 你用 fastapi 前端搭什么框架好?
    lixuda
        15
    lixuda  
       2020-11-10 14:51:58 +08:00
    flask
    tanjnr
        16
    tanjnr  
       2020-11-10 14:53:29 +08:00 via iPhone
    @azev 楼上推荐的 fastapi 也不错的,你要是全新开发,用这个 fastapi 挺好。我用的自研框架是写了很久的,一套代码比较成熟,功能比较完整的 mvc 库。对我来说,在此基础上开发效率较高。
    wuzhanggui
        17
    wuzhanggui  
       2020-11-10 15:04:33 +08:00   ❤️ 1
    @rogwan 我用的 vue,好用呐
    Kilerd
        18
    Kilerd  
       2020-11-10 15:09:59 +08:00
    rust 啊

    做工慢,运行速度快,占用内存还少
    lithbitren
        19
    lithbitren  
       2020-11-10 15:23:56 +08:00   ❤️ 1
    rust 用的好的话各项指标都会超过 go,但主要是碰到很多问题根本找不到答案,就算是英文资料也不够多,不管是 actix/hyper/warp,很多需要小小提示一下就能解决的简单需求也不一定找得到结果,底层很多东西更是搞不清楚原理,能编译通过就不错了。不像 java/python/go 无论是肤浅的问题还是有深度的问题,基本都能找到解决方案,所以个人还是推荐 fastapi 和 gin,不过也看多小的应用了,实际上就算是 flask/django 面对大多数小应用也是没问题的,java 熟的也可以直接上 springboot,开发速度也很快,其他没用过不太懂。
    3dwelcome
        20
    3dwelcome  
       2020-11-10 15:26:48 +08:00 via Android
    怎么没人说用 nodejs,低配置单核首选。
    ShuangChenyue
        21
    ShuangChenyue  
       2020-11-10 15:27:52 +08:00
    go 吧
    mmdsun
        22
    mmdsun  
       2020-11-10 15:38:59 +08:00 via Android
    这几个框架 springboot 最好用。但 Java 资源占用太大了。

    推荐 dotnet core api 吧,和 springboot 差不多。但占用小很多。
    crclz
        23
    crclz  
       2020-11-10 15:48:01 +08:00
    .Net core
    p1094358629
        24
    p1094358629  
       2020-11-10 15:50:40 +08:00
    jfinal
    cmdOptionKana
        25
    cmdOptionKana  
       2020-11-10 15:54:26 +08:00
    不是太懂 dotnet core, 印象中好像和 Java 一样需要一个类似于 jvm 的东西吧?如果是的话也不省内存。

    然后 flash(python) 如果不做优化,占用内存应该比 Go 大。

    php 要看你用什么框架,这个内存占用受框架影响比较大。
    sagaxu
        26
    sagaxu  
       2020-11-10 15:55:03 +08:00 via Android
    springboot 起码需要 0.1G 内存,稍微带点逻辑 0.2G 起步,要跑的欢快至少要 0.5G
    cmdOptionKana
        27
    cmdOptionKana  
       2020-11-10 16:03:32 +08:00   ❤️ 2
    看了一下我服务器上正在跑的四个用 Go 写的小网站(没有访问量的自用网站),分别占用 0.6M, 0.8M, 1.0M, 4.2M
    darktutu
        28
    darktutu  
       2020-11-10 16:05:06 +08:00
    GiantHard
        29
    GiantHard  
       2020-11-10 16:15:57 +08:00 via Android
    省内存这点首先排除 Spring Boot,我个人偏好静态类型,所以接着排除 flask 跟 PHP,建议 Go 跟 ASP.NET Core 二选一
    beyondex
        30
    beyondex  
       2020-11-10 16:18:29 +08:00
    dotnet core 用 ASP.NET Core 框架开发 Web 不加入其它大型框架的话,几十 MB 内存吧。
    Rwing
        31
    Rwing  
       2020-11-10 16:26:32 +08:00   ❤️ 2
    假定你这个应用只是输出一个 helloworld
    内存占用从小到大:go < .net core ≈ flask < spring
    不知道你说的速度是指什么?
    如果是运行性能,从快到慢:.net core ≈ go < spring < flask
    如果是开发效率,从快到慢:.net core ≈ spring < flask < go
    综上所述,考虑. net core 吧 😊

    部分数据参考 https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=plaintext
    php 个体间差异太大不纳入统计
    libook
        32
    libook  
       2020-11-10 16:38:28 +08:00
    技术上基本上是个无底洞,你可以不断优化,就看你觉得值得投入多少。

    省内存,那么主流的有垃圾回收机制的语言就不占优势了;要快的话,通常编译成机器码的会比虚拟机或解释器型的语言好一些,当然也有例外。

    但看省内存和速度快这两个方面的话 Rust 语言写的程序可能会比较符合要求,当然 C++也可以,就是写出好程序比较考验功力。

    不过个人经验看来即便云主机配置再低,跑几个小服务用啥技术栈也都没啥大问题。

    以上都是针对有动态业务逻辑的 Web 服务,如果你只是 host 几个静态文件的话,Nginx 各方面都很不错。
    zoharSoul
        33
    zoharSoul  
       2020-11-10 16:43:11 +08:00
    @cmdOptionKana #27 这也太小了吧
    什么框架啊?
    jj123456
        34
    jj123456  
       2020-11-10 18:03:08 +08:00
    多小的 web 应用?
    brokenQ
        35
    brokenQ  
       2020-11-10 18:18:49 +08:00
    litespeed
    namelosw
        36
    namelosw  
       2020-11-10 18:41:39 +08:00 via iPhone
    Rust
    Cbdy
        37
    Cbdy  
       2020-11-10 18:42:36 +08:00 via Android
    试试 Node.js
    locoz
        38
    locoz  
       2020-11-10 18:46:32 +08:00 via Android
    fastapi 确实挺爽的,但是省内存的话还是用 go 的吧,知名的几个都可以
    cmdOptionKana
        39
    cmdOptionKana  
       2020-11-10 18:51:27 +08:00
    @zoharSoul Go 做小网站用不用框架都行,标准库基本够用了,我就用标准库。

    其中一个项目是用来临时保存文字备忘、临时保存文件的网站,有点类似于 firefox send, 但做成了单用户系统(而不是公用型),同时提供了简单的命令行功能(可以从手机或电脑发送文本消息,然后在服务器用命令行接收),这几天打算整理一下就发布。
    ghjacky
        40
    ghjacky  
       2020-11-10 18:57:21 +08:00
    自己的 vps 512m 内存,go+vue 做了个博客,跑有 nginx 、ss 、mysql,其他都是系统服务,内存使用 190m
    Immortal
        41
    Immortal  
       2020-11-10 18:57:21 +08:00
    @Rwing #31
    运行性能真的没排错么
    cocoabeans
        42
    cocoabeans  
       2020-11-10 20:07:45 +08:00
    sanic
    ourslay
        43
    ourslay  
       2020-11-10 21:01:21 +08:00 via iPhone
    quarkus native
    bugsnail
        44
    bugsnail  
       2020-11-10 21:03:27 +08:00
    世界上 80%的网页都是 PHP 写的

    所以,你应该选 go
    lbp0200
        45
    lbp0200  
       2020-11-10 21:21:48 +08:00
    节省内存考虑
    golang>dotnet core> flask> springboot> php

    现实是,根本没有访问量,所以你这个伪需求,用啥都一样
    lbp0200
        46
    lbp0200  
       2020-11-10 21:22:35 +08:00
    @ghjacky PostgreSQL 更省内存
    xionger
        47
    xionger  
       2020-11-10 22:10:51 +08:00
    flask
    debuggerx
        48
    debuggerx  
       2020-11-10 22:16:29 +08:00
    go+标准库
    Jackeriss
        49
    Jackeriss  
       2020-11-10 23:49:53 +08:00 via iPhone
    首先排除 spring boot 。。。时候剩下的熟悉哪个用哪个
    aaronlam
        50
    aaronlam  
       2020-11-10 23:55:28 +08:00
    推荐 Nodejs
    reeco
        51
    reeco  
       2020-11-10 23:58:47 +08:00
    springboot + openj9 内存占用也很省的,放弃 spring boot 用 vertx 之类的,能更省一点
    thet
        52
    thet  
       2020-11-11 00:04:16 +08:00 via iPhone
    肯定 go 呀,开发快 特别省内存,用标准库开发就行,性能又好
    MintZX
        53
    MintZX  
       2020-11-11 04:22:01 +08:00 via iPhone
    小项目当然是 ruby on rails 啊,按天算的开发周期
    lancelock
        54
    lancelock  
       2020-11-11 08:55:36 +08:00 via iPhone
    java 就可以,我昨天试了 quarkus + graalvm 本地编译,快的飞起
    还有.net core 已经没了.net 5 昨晚刚发布,可以试试,开发体验好
    go 我写过感觉不怎么顺手,可能是不太熟悉吧
    96412hj
        55
    96412hj  
       2020-11-11 09:34:02 +08:00
    ```go
    package main

    import "github.com/gin-gonic/gin"

    func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
    c.JSON(200, gin.H{
    "message": "pong",
    })
    })
    r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
    }
    ```
    zarte
        56
    zarte  
       2020-11-11 09:54:52 +08:00
    当然是 php 咯,go 你修改了还要编译下。
    yincrow
        57
    yincrow  
       2020-11-11 10:14:54 +08:00
    纯 HTML 速度快又省内存
    mauve
        58
    mauve  
       2020-11-11 10:35:32 +08:00
    JAMStack 最省内存,性能基本不存在上限,因为不相关,访问速度和 CDN 的速度一样
    mingsz
        59
    mingsz  
       2020-11-11 11:13:11 +08:00   ❤️ 1
    node 或 go
    JJstyle
        60
    JJstyle  
       2020-11-11 11:18:48 +08:00
    ```php
    <?php

    header('Content-type: application/json');

    echo json_encode(['message' => 'pong']);

    ```

    $ php -S 0.0.0.0:80

    论快,我大 PHP 服过谁?
    xxxy
        61
    xxxy  
       2020-11-11 12:18:52 +08:00
    nodejs 吧,非常省事
    acmore
        62
    acmore  
       2020-11-11 13:42:42 +08:00
    开发效率上的话,PHP, Flask / FastAPI, Express, Spring Boot CLI 等都可以几乎以单文件进行编写和部署,要找一个最快的方案的话,如 60 楼所说,PHP 最快。
    whusnoopy
        63
    whusnoopy  
       2020-11-11 17:01:48 +08:00
    你会啥选啥,如果需要多花你三五天去调试搭环境啥的,这个钱省出来直接去买个高配点的云主机不好么,非得去抠这一点,一个靠谱点的研发岗,一周的薪资开销还不够买个好点的云主机?能用的久再考虑优化吧,也许没多久这个应用就下掉不要了
    cxsz
        64
    cxsz  
       2020-11-11 17:44:29 +08:00
    fastapi 挺好用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2534 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:30 · PVG 12:30 · LAX 20:30 · JFK 23:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.