面试题答案
一键面试数据获取场景
- 页面路由(
getStaticProps
、getServerSideProps
):getStaticProps
:适用于数据不经常变化,如博客文章、产品介绍页面等。在构建时获取数据,生成静态HTML页面,可提高首屏加载性能。getServerSideProps
:用于数据需要实时获取或基于用户特定信息(如用户认证状态)的场景,如用户个人资料页面、动态订单页面等。每次请求页面时都会在服务器端获取数据。
- API路由:主要用于提供数据接口供前端或其他应用程序调用。可处理各种复杂的数据获取逻辑,如与数据库交互、调用第三方API等,且与页面渲染解耦。
性能影响
- 页面路由(
getStaticProps
、getServerSideProps
):getStaticProps
:构建时获取数据生成静态页面,减少了运行时数据获取开销,提升用户访问速度。但构建时间可能会因数据获取量增加而变长。getServerSideProps
:每次请求都在服务器端获取数据,会增加服务器负载,尤其是高并发场景下。首屏加载时间可能比getStaticProps
生成的静态页面长。
- API路由:不直接影响页面加载性能,但如果API本身性能不佳(如查询数据库慢),会影响依赖该API的前端应用体验。可通过缓存等机制优化性能。
数据更新频率
- 页面路由(
getStaticProps
、getServerSideProps
):getStaticProps
:数据更新依赖于重新构建。如果数据频繁变化,频繁重建成本高,适用于数据更新频率低的场景。可通过增量静态再生(ISR)实现一定程度的动态更新。getServerSideProps
:每次请求都获取最新数据,数据更新频率实时。但频繁获取可能导致资源浪费,适合数据变化频繁的场景。
- API路由:数据更新频率取决于API实现逻辑。可根据需求灵活设置缓存策略,控制数据更新频率,如设置短时间缓存以减少重复查询。