我在考虑博客首页优化的时候,灵机一动想要先响应前 10 条博客,然后流式响应剩下的。就问了一下 gpt 。除了第一问以外,后续都是在跟 gpt 争论。。。
我认为在博文只有 100 条左右的时候,/api/posts
应该没有明显差距(尤其是 posts 接口还不获取内容,只获取标题、简介、发布日期之类的东西)
我假设都需要 200ms.
那么按 gpt 的意思来干的话,页面会是
|-- 白屏
|--|-- 200ms 后接口获取到数据,渲染 html 输出到前端
|--|-- 同时 Suspense 显示 fallback
|--|-- 同时请求第二个 get 接口,
|--|--|-- 再 200ms 后接口获取到数据,渲染 html 输出到前端
按我的意思的话,页面会是
|-- Suspense 立即显示 fallback
|-- 同时请求 get 接口,
|--|-- 200ms 后接口获取到数据,渲染 html 输出到前端
这不是明显我的方案更优吗,省了 200ms 的白屏。可 gpt 非说它的更好。
大佬们帮我看看,是不是我理解得不到位。
'use server'
async function Posts({ start, count }: { start: number; count?: number }) {
const data = await get('/api/posts', {
start,
// 假设 count 为空的时候获取后续所有
count,
})
return <RenderPosts data={data} />
}
// gpt 的意思是这样
export function Page() {
return <>
<Posts start={0} count={10} />
<Suspense fallback={<div>loading</div>}>
<Posts start={10} />
</Suspense>
</>
}
// 我的意思是这样
export function Page() {
return <>
<Suspense fallback={<div>loading</div>}>
<Posts start={0} />
</Suspense>
</>
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.