next.js 对于大量页面的性能真的很差吗,比如打包很慢?

1 天前
 MRlaopeng

现在有一个 100w 页面 html 的需求 我之前在想用 hugo 做的, 但是 AI 却和我说, hugo 在每次修改之后都需要进行全量生成全部网页,这样的对于工程化不友好 然后我就想别的方法, 看到主流做 seo 的方案都是 next.js 他对于大量网页的情况会存在哪些性能问题呢?

639 次点击
所在节点    Next.js
18 条回复
imingyu
1 天前
好奇你的 100 万个页面都是啥
gotoschool
1 天前
不算慢啊
我在用 还行啊
MRlaopeng
1 天前
@imingyu 假设下,,因为我在技术选型的时候喜欢,小小的设置一个极限情况
MRlaopeng
1 天前
@gotoschool 好的 感谢回复, 我去找一下有没有什么现成的二开项目
hugozach
1 天前
啥玩意 100w 啊 首先 100w 就不合理
量级大起来处理肯定费劲 用啥都费劲 如果有个前端项目打包 1pb 你别说打包了 电脑打开都是问题
94
1 天前
有一个评测项目,可以直接参考,但是已经很长时间没有维护更新了。
👉 [seancdavis/ssg-build-performance-tests - Github]( https://github.com/seancdavis/ssg-build-performance-tests)

而且不管是 Hugo NextJs 还是其他的带有 SSG 能力的框架,基本上都是可以配置 cache 来加快构建速度的,或者增强成增量更新。

-----

但其实没有必要关注这些构建时的性能,除非是真的有非常大量的页面需要生成,比如说一些内网使用的开发文档。
大部分情况下我们都会托管在服务器上,通过 CI/CD 能力让服务器自动执行构建脚本,比如说 Github 上面的 Actions ,并不太会关注到底会执行多久,只需要关注自己是否提交就行了。
gucheen
1 天前
你觉得 hugo 能应付 100 万页面?
你是不是误解了 100 万动态页面和 100 万静态页面?
weixind
1 天前
@MRlaopeng #3

个人想法:技术选型是选择最适合的技术栈,要贴近需求。不是哪个性能最好就选哪个。
MRlaopeng
1 天前
@gucheen ai 和我说, 如果用 hugo 那就是完全生成 100w 个 html, 那确实太麻烦了
但是如果用 next.js 是不是可以就类似于动态路由那样 动态生成呢
MRlaopeng
1 天前
@weixind emm, 那就是选择当前最火的 next.js 了?
gucheen
1 天前
@MRlaopeng 我觉得你可能都没搞懂你的需求或者说你没搞懂你要做什么
建议先理清需求再做技术选型
另外我觉得你对你要用的技术也不够理解,这种情况做技术选型基本都是无用功
MRlaopeng
1 天前
@gucheen 老哥你这句话有点绕,,,我现在就是在 100w 个页面用来做 seo 的背景下,需要选一个好用的技术
94
1 天前
@MRlaopeng #12 ,我觉得你这个 100W 个页面的出发点就很奇怪。你先要确定你这个项目是要干什么,然后让大家来给你推荐推荐。你再从我们推荐的技术栈里面选你符合心意的。
而不是说我现在要性能最好的那一个,你们说我现在选择的这两个里面哪一个性能好,但是不提你这个性能的需求场景。是展示型的企业站,文档站,还是自己写博客,即使说拿来做内容农场都行。

-----
如果有人说 Hugo 性能强 1000w 个页面渲染手拿把掐,然后你真信了,拿去开发管理后台不就瞎了吗……
MRlaopeng
1 天前
@94 哦哦 原来是这样, 老哥你这样说我就理解了
94
21 小时 50 分钟前
@MRlaopeng #14 ,所以就看你要做什么项目,但是会考虑到 hugo 估计就是企业官网和博客这两种类型。
那么其实选一个自己喜欢的就好了。大部分还在更新的带 SSG 能力的框架都支持了<增量更新>,或者有 plugin 可以增强成增量更新。

但其实很多情况下并不是因为不能增量更新的问题,而是因为 SSG 框架会渲染的静态 HTML 文件,如果侧边小组件里面展示到了一些最新文章和词云排名这样每次更新会变更的内容,不是通过 API 调用返回的。就不可避免地会需要重新生成新的 HTML 内容, 因为最新文章虽然没有变更,但是小组件里面的内容确实已经变更了。
MRlaopeng
20 小时 47 分钟前
@94 好的,谢谢大佬, 这个小组件的问题确实让我纠结, 看到你说 不可避免地会需要重新生成新的 HTML 内容 , 那我就还是选择先用 hugo 做一版本试试看
94
20 小时 26 分钟前
@MRlaopeng #16 ,但 NextJS 之类的框架可以做到部分动态,这样就不会每次都需要重新生成新的 HTML 缓存,只需要确定哪一些部分是客户端渲染就行了。
但是 Hugo 就没有提供这个能力了得你自己去做。只是 Next 需要在服务端启服务,Hugo 就不需要了只需要静态页托管就行。SSG 和 SSR 在这部分的差异就体现出来了。

所以你自己得心里有预期,你到底是要准备做什么样子的项目,以后怎么部署和运维。
MRlaopeng
20 小时 14 分钟前
@94 好的, 感谢大佬

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

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

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

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

© 2021 V2EX