[{"data":1,"prerenderedAt":31},["ShallowReactive",2],{"article-ssg-blog-setup":3},{"id":4,"title":5,"slug":6,"summary":7,"coverUrl":8,"contentFormat":9,"contentHtml":10,"viewCount":11,"publishTime":12,"updateTime":13,"seoTitle":5,"seoDescription":7,"tags":14,"prev":23,"next":26,"highlighted":30},"2","为什么我把博客改成了 SSG，以及百度收录从 3% 到全量","ssg-blog-setup","之前的博客是纯客户端渲染的 SPA。上线三个月，百度收录率大概 3%。 问题不在\"百度不执行 JS\" 用 Baiduspider 的 UA 直接抓一次就明白了——返回的是一个 3KB 的空壳： curl -s -A \"Mozilla\u002F5.0…","","markdown","\u003Cp>之前的博客是纯客户端渲染的 SPA。上线三个月，百度收录率大概 3%。\u003C\u002Fp>\n\u003Ch2>问题不在\"百度不执行 JS\"\u003C\u002Fh2>\n\u003Cp>用 Baiduspider 的 UA 直接抓一次就明白了——返回的是\u003Cstrong>一个 3KB 的空壳\u003C\u002Fstrong>：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">curl -s -A \"Mozilla\u002F5.0 (compatible; Baiduspider\u002F2.0; +http:\u002F\u002Fwww.baidu.com\u002Fspider.html)\" \\\n  https:\u002F\u002Fexample.com\u002F | wc -c\n# 3029\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>百度确实执行 JS，但它有一个\"渲染配额\"，只够覆盖极少数页面。\u003C\u002Fp>\n\u003Ch2>改成预渲染之后\u003C\u002Fh2>\n\u003Cp>\u003Ccode>nuxt generate\u003C\u002Fcode> 把每个页面在构建时渲染成静态 HTML，爬虫拿到的是\u003Cstrong>完整正文\u003C\u002Fstrong>：\u003C\u002Fp>\n\u003Cul>\n \u003Cli>首页从 3KB 空壳变成 20KB 完整 HTML\u003C\u002Fli>\n \u003Cli>首屏传输量从 441KB 降到 89KB（开了 gzip 之后）\u003C\u002Fli>\n \u003Cli>不追求\"买快速收录\"，那类服务早就下线了\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>代价\u003C\u002Fh2>\n\u003Cp>改一篇文章要重新构建。但构建只要几秒，而且发布脚本已经做成一条命令，不是问题。\u003C\u002Fp>","125","2026-08-30 20:56:11","2026-10-18 23:25:29",[15,19],{"id":16,"name":17,"slug":18},"1","技术","tech",{"id":20,"name":21,"slug":22},"5","部署","deploy",{"id":16,"title":24,"slug":25},"Spring Boot 4 升级踩坑记：三个会让你编译不过的变更","spring-boot-4-upgrade",{"id":27,"title":28,"slug":29},"3","改 nginx 只新增、不改动：一条自救用的运维纪律","nginx-discipline","\u003Cp>之前的博客是纯客户端渲染的 SPA。上线三个月，百度收录率大概 3%。\u003C\u002Fp>\n\u003Ch2>问题不在\"百度不执行 JS\"\u003C\u002Fh2>\n\u003Cp>用 Baiduspider 的 UA 直接抓一次就明白了——返回的是\u003Cstrong>一个 3KB 的空壳\u003C\u002Fstrong>：\u003C\u002Fp>\n\u003Cpre class=\"shiki rose-pine-dawn\" style=\"background-color:#faf4ed;color:#575279\" tabindex=\"0\" data-lang=\"bash\">\u003Ccode>\u003Cspan class=\"line\" data-line=\"1\">\u003Cspan style=\"color:#D7827E\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#286983\"> -s\u003C\u002Fspan>\u003Cspan style=\"color:#286983\"> -A\u003C\u002Fspan>\u003Cspan style=\"color:#EA9D34\"> \"Mozilla\u002F5.0 (compatible; Baiduspider\u002F2.0; +http:\u002F\u002Fwww.baidu.com\u002Fspider.html)\"\u003C\u002Fspan>\u003Cspan style=\"color:#286983\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" data-line=\"2\">\u003Cspan style=\"color:#EA9D34\">  https:\u002F\u002Fexample.com\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#286983\"> |\u003C\u002Fspan>\u003Cspan style=\"color:#D7827E\"> wc\u003C\u002Fspan>\u003Cspan style=\"color:#286983\"> -c\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" data-line=\"3\">\u003Cspan style=\"color:#797593;font-style:italic\">#\u003C\u002Fspan>\u003Cspan style=\"color:#9893A5;font-style:italic\"> 3029\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>百度确实执行 JS，但它有一个\"渲染配额\"，只够覆盖极少数页面。\u003C\u002Fp>\n\u003Ch2>改成预渲染之后\u003C\u002Fh2>\n\u003Cp>\u003Ccode>nuxt generate\u003C\u002Fcode> 把每个页面在构建时渲染成静态 HTML，爬虫拿到的是\u003Cstrong>完整正文\u003C\u002Fstrong>：\u003C\u002Fp>\n\u003Cul>\n \u003Cli>首页从 3KB 空壳变成 20KB 完整 HTML\u003C\u002Fli>\n \u003Cli>首屏传输量从 441KB 降到 89KB（开了 gzip 之后）\u003C\u002Fli>\n \u003Cli>不追求\"买快速收录\"，那类服务早就下线了\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>代价\u003C\u002Fh2>\n\u003Cp>改一篇文章要重新构建。但构建只要几秒，而且发布脚本已经做成一条命令，不是问题。\u003C\u002Fp>",1792348093734]