gpt4 book ai didi

javascript - next.js:是否可以只为 google bot 和其他爬虫而不为用户做 SSR?

转载 作者:行者123 更新时间:2023-12-05 00:34:03 26 4
gpt4 key购买 nike

网站实际上每天为数万用户提供服务,我们计划添加 SSR 以显示在 google 中(难以置信,我知道)并在 Messenger 中共享时进行预览。
目前它是客户端 react 应用程序,我担心迁移到 next.js 后服务器会有什么感觉。
检测机器人应该不是问题:通过用户代理。
什么是最优化的解决方案?
也许 nginx 会根据用户代理修改 url 参数,例如用户的“/page”和机器人的“/page@ssr”,会有 pages/page.js没有 getInitialProps对于用户和 pages/page@ssr.js对于机器人,这两个文件将以不同的方式获取数据,并将使用这些数据呈现相同的组件。你怎么看?

最佳答案

也看看 ISR (Incremental Static Generation)
如果担心服务器会变得非常忙渲染并且在高峰使用期间无法快速响应,这可能会有所帮助。您可以以完全相同的方式为爬虫和用户执行 ISR,这也将降低系统的复杂性。
我已经描述了如何在 What is the difference between fallback false vs true vs blocking of getStaticPaths with and without revalidate in Next.js? 使用它,但基本上你需要从 getStaticPaths 返回:

{
fallback: true, // or 'blocking'
revalidate: <integer>
}
然后服务器将最多每 revalidate 秒渲染一次并保存该预渲染。如果在 revalidate 超时之前有多个请求,则页面将不会重新呈现(因此可能包含陈旧数据,但您无法确保一切正常)。
然后,为了处理用户特定的数据(我们只针对已注销用户的内容进行 ISR 处理,因为我们只能将此类常见请求排除在外,而不能考虑用户特定的请求),您可以在初始加载后发出 API 请求,然后返回只有用户特定的数据才能用它更新“用户注销页面”版本。
Here's an example 。那是 gothinkster/realworld 的一个实现,它基本上是一个很小的 ​​Medium 克隆。例如当你访问一篇文章时,用户会看到一个按钮说“喜欢这篇文章”/“不喜欢这篇文章”,所以客户端需要知道用户的具体数据“我喜欢这个还是不喜欢这个?”。所以在我的实现中,我只是 ISR 漏洞页面,并且只返回这个用户特定的数据(好吧,老实说,在那个例子中,我正在返回完整的文章数据来克服 "I don't know how to nicely make users immediately see updated blog posts after edits" )。
尽管如此,我怀疑 SSR 和 ISR 之间在客户端每天只有数千个请求时会存在明显的性能/服务器使用差异。这些事情最终只能通过基准测试来回答。

关于javascript - next.js:是否可以只为 google bot 和其他爬虫而不为用户做 SSR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64132884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com