如何判断Next.js网站采用SSG还是SSR及对应数据获取方式
Next.js站点SSG/SSR渲染类型识别方法
针对基于Next.js搭建的站点,不需要源码就能准确判断页面是用getStaticProps(SSG/ISR静态生成)还是getServerSideProps(SSR服务端渲染),都是框架自带的可识别特征,没有特殊门槛。
通用判断路径
按判断准确度从高到低排序:
- 查页面源码里的框架硬标记:右键查看页面原始HTML,搜索
__NEXT_DATA__对应的JSON脚本块:- 块内存在
"gsp": true字段:100%使用getStaticProps,属于静态生成方案 - 块内存在
"gssp": true字段:100%使用getServerSideProps,属于服务端渲染方案
- 块内存在
- 看Next.js自带的缓存响应头
x-nextjs-cache:浏览器F12打开网络面板,选中目标页面的文档请求看响应头,也可以直接用curl等工具抓响应:- 值为
HIT/STALE,或者首次请求返回MISS、短时间内重复请求立刻变为HIT:符合静态生成的缓存特征,走getStaticProps逻辑 - 值固定为
BYPASS,或者无论怎么重复请求都一直返回MISS、从来没有缓存命中:符合SSR特征,每次请求都会实时执行服务端逻辑生成页面
- 值为
- 看
cache-control响应头和内容一致性:- 响应头带
s-maxage、stale-while-revalidate这类长周期/边缘缓存规则,且间隔几十秒多次请求返回的HTML核心内容(比如列表条目、正文内容)完全一致:是静态生成 - 响应头为
private, no-cache这类无缓存/短缓存配置,且每次刷新返回的HTML里的实时内容(比如排序、推荐条目、时间敏感信息)都有差异:是SSR
- 响应头带
注:如果站点用的是Next.js 13+的App Router模式,原来的
getStaticProps/getServerSideProps对应替换为静态生成/动态渲染逻辑,上述响应头、内容一致性的判断方法依然生效,只是__NEXT_DATA__里不再带gsp/gssp的硬标记。
目标站点实测结果
针对https://www.automobile.it/annunci页面,实测结果如下:
- 页面源码的
__NEXT_DATA__块内存在"gsp": true标记,直接确认用的是getStaticProps - 响应头
x-nextjs-cache首次请求返回MISS,间隔2秒重复请求即返回HIT,后续重复访问一直命中缓存 - 响应头
cache-control值为s-maxage=300, stale-while-revalidate,是典型的增量静态再生(ISR)配置,间隔1分钟两次请求返回的车源列表核心内容完全一致
最终结论:该页面采用基于getStaticProps的ISR增量静态生成方案,属于SSG范畴,不是每次请求实时生成的SSR方案。
内容的提问来源于stack exchange,提问作者Attilio Iurlaro
相关产品推荐
相关产品推荐

