Luk*_*ron 5 javascript reactjs next.js react-query
我需要更多细节来支持这个问题:Explain data revalidation in Next JS 13
我正在使用新的 next js 13 应用程序目录功能来获取数据;正如 Next JS 13 文档所述,在本页标题为“在服务器上获取数据”的部分中:
只要有可能,我们建议在服务器上获取数据。
该文档讨论了新的数据获取技术(例如服务器操作和路由处理程序)如何允许客户端组件与服务器通信以获取数据,而不是直接在客户端中获取数据。服务器操作和路由处理程序用于创建可直接访问数据库的专用 API;但是,我使用的是 Supabase,Supabase 生成了一个 API 供我与数据库进行通信。
因此,我正在争论在服务器操作或路由处理程序上执行 Supabase API 调用是否有意义,或者(因为 Supabase API 已经托管在 supabase 服务器上)客户端 API 调用是否可以。
具体来说,Next JS 建议在服务器上获取数据,然后调用生成的 api(服务器操作或路由处理程序),我有点困惑;虽然服务器操作和路由器处理程序可以为我进行 api 调用,但这有必要吗?由于我正在调用在其他地方提供服务的专用 API 路由,而不是直接数据库调用,为什么不直接从客户端进行调用(例如 fetch api 或 React 查询,直接在客户端组件中)。这与调用服务器操作或路由处理程序有何不同,因为它们只是生成要从客户端调用的 api?
小智 7
我个人决定是从后端还是前端获取,考虑如下。
/info/celeb/FooBarJohn页面在爬虫看到时立即包含有关 FooBarJohn 的信息。)在 中Next.js 13,数据重新验证涉及更新获取的数据以使其保持最新并最大限度地减少不必要的请求。服务器操作和路由处理程序等新功能提供了在服务器上获取数据的有组织的方法,从而增强了数据重新验证。
建议Next.js documentations使用服务器操作或路由处理程序在服务器端获取数据。这比客户端获取更可取,并带来 SEO 改进、甚至服务器负载和数据一致性等好处。
对于Supabase用户来说,有两种获取数据的选择。您可以使用他们生成的 API,它可以有效地与数据库进行通信。Next.js 13这与数据处理的更新非常吻合。
两个选项:
Superbase-generated API从客户端组件直接进行 API 调用。这是一种有效的方法,特别是当您主要关心客户端的数据加载时。Next.js application. 你可以发起API调用,Superbase Servers同时一个很大的好处是你可以在服务器端封装更多的逻辑。如果您必须执行比简单 API 调用更进一步的其他操作,这可能非常有用,当您需要确保数据获取发生在服务器端时(对于 SEO 等)也是如此。直接调用客户端 API 与使用Server Actionsor之间的有效区别Route Handlers仅仅在于控制和封装的级别。这两个可以充当middleware layer在 API 调用之前/之后执行许多操作的服务器。这可能是身份验证检查、数据转换或一些附加的服务器逻辑。
这实际上取决于您的具体情况Use Case和您想要的:
Client-Side API Calls可能Supabase-generated API是最好的选择。Server Actions或Route Handlers将提供这些好处。不过,无论您做出哪种选择,Next.js 13都有数据重新验证机制,可以根据设置的重新验证间隔,通过自动重新验证并在必要时刷新数据,帮助确保获取的数据自动保持最新状态。这确保了数据新鲜度和性能优化之间存在一定的平衡。
| 归档时间: |
|
| 查看次数: |
4602 次 |
| 最近记录: |