不懂就问: node.js 做静态资源服务器如何?

2020-09-09 23:02:41 +08:00
 cat
有个轻业务,访问量不大,后端已经用 koa 写了,现在需要提供图片及其它文件给前端,请问可以直接在 koa 中返回文件的 stream 吗?

如果文件比较大( 100M 以内)是否还合适?

以前都是由 nginx 提供,现在为了省一个流程,想用 koa 直接做 http server
6136 次点击
所在节点    Node.js
32 条回复
lijialong1313
2020-09-10 11:02:18 +08:00
我认为可能是 node 不好做安全处理,nginx 是专业的 web 服务器的话可能 nginx 在安全方面可能更好……这是我猜测
Mohanson
2020-09-10 14:59:13 +08:00
狗头,连 node 性能更好都出来了…
jawnkuin
2020-09-10 15:26:23 +08:00
OSS+CDN 一分钟搞定,就别自己写了
cat
2020-09-10 16:44:38 +08:00
@jawnkuin 内网项目呢?敏感数据呢?呵呵
w3cfed
2020-09-10 23:10:16 +08:00
不知道楼主技术栈是啥。搭建 Nginx 静态资源服务器没啥技术成本丫。性能还是可以的。能少?指的是。30 min 配置好。
marcong95
2020-09-11 21:46:26 +08:00
直接 caddy file-server ?
libook
2020-09-14 11:57:50 +08:00
开头也说了是轻业务、访问量不大,基本原则就是如果没有可预见的问题或明确的需求,顺不顺手就会成为选型的首要因素,哪个顺手直接用就好了,等遇到问题再优化或者换方案。

如果你提供文件是有业务逻辑控制的,不好直接用 Nginx 简单 host 一个目录的话,那就直接在 Koa 里搞就行了,fs readable stream 直接 pipline 到 res 的 response writable stream 就行了。

一般如果在提供静态文件访问服务上面不需要额外的业务逻辑参与的话,Linux 上直接包管理器 install nginx,然后去 /etc/nginx/ 下改一下配置文件写上你的静态文件目录的路径,有需要再加上几个 Header,这个已经比装 Node 、装包、写代码要简单一些了;要想更简单的话大多数 Linux 都预装了 python,一行 python3 -m http.server 或者 python2 -m SimpleHTTPServer 就能启动一个静态文件服务器。

而且提供静态文件访问的性能方面话还要看你的磁盘 IO 、网络速度、能提供的内存缓存大小等。

要是真的对这个性能情况好奇,可以自己做一下 benchmark,然后把结果发上来。
love
2020-09-14 23:05:45 +08:00
服务地址在哪?我本地打个压测命令看看能不能撑得住 :)
nginx 有现成的网络防护,限制流量并发什么的,自己写的没有,如果有恶意用户都不用 DDOS,本机就搞死你了。
ppgs8903
2020-09-29 08:57:48 +08:00
量不大都一样,量大 cdn 。~ ~ 能问出来这种问题的,8899 量不大的。
xcstream
2020-11-10 00:26:58 +08:00
视频拖拽进度条可以么
oliver2bao
2020-11-17 11:08:06 +08:00
额........这种事还是 nginx 做比较合适吧,虽然 node 也能做,但是手撸一个能和 nginx 功能的都很吃力,性能的话更不用说了吧。
yodhcn
2020-11-20 12:08:18 +08:00

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

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

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

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

© 2021 V2EX