SEO 百科

静态站点生成器

本页目录

静态站点生成器

静态站点生成器 是一类把模板和内容文件合起来、在构建阶段生成完整 HTML 的工具,访客打开页面时服务器只负责把文件发出去[1]。它适合更新不频繁的站点,例如博客、文档和说明页。选它的好处是页面快、托管便宜、对服务器的要求低;代价是每次更新都要重新构建并部署,动态功能得另想办法补。

工作原理

生成器在构建时读取内容文件,套上模板,输出一批 HTML 文件。Astro 文档把这个过程写得很直白:默认模式在各页面路由上于构建阶段生成 HTML,整站预先渲染,服务器不用按请求现算[1]。

Eleventy 的流程类似:模板文件放进项目目录,运行一次命令,输出目录里就多出对应的 HTML[2]。生成出来的文件不依赖数据库,也不依赖运行时。

构建流程与部署

以 Eleventy 为例,从空目录到能看结果只有几步[2]:

npm init -y
npm install @11ty/eleventy
npx @11ty/eleventy

命令跑完,输出目录 _site 里放着整站文件,可以直接上传[2]。本地预览加 --serve,改完文件浏览器会自动刷新。

部署方式很灵活,整站文件可以放到对象存储、静态托管服务或者任意网络服务器上。没有数据库也没有运行时,服务器只需把文件发回去。

博客、文档和营销页是它的主场。Jamstack 社区维护的生成器清单里收录了三百多个项目,语言从 JavaScript 到 Go、Rust 都有[6],选型时先看模板语言和构建速度。

内容更新与构建成本

内容更新要走一遍「改文件、重新构建、上传」的流程。文章多、构建慢的站点,改一个错别字也要等整站重新生成。

自动化能把这段接过去。常见做法是把内容放进代码仓库,改动提交后由流水线自动构建并部署。构建时间随页面数增长,页面过万的时候,增量构建和缓存策略就成了必须考虑的事。

与抓取和收录的关系

静态站点在抓取这一项上占便宜。HTML 在构建时就生成好,爬虫不用执行脚本就能读到内容,也不用等服务器算页面。

要自己补的部分和别的前台方案一样:

  • 站点地图:在构建流程里生成,再提交给搜索引擎。Google 说明,站点地图用来告诉引擎哪些网页比较重要[3]。
  • 规范化:分页、标签页和参数页容易派生出重复地址,用 rel="canonical" 指回主版本。Google 把重定向和 rel="canonical" 都算作强信号[4]。
  • 重定向:改网址后旧地址不会自动接上,要自己写规则,并在部署时带上。
  • 结构化数据:写在模板里,跟着页面一起生成。

速度是它的长项。没有运行时和数据库,响应时间基本等于读取文件的时间;百度把搜索对网页的处理概括为抓取、建立索引和展现三步[5],响应快的站点在这一步上花费的时间更少。

常见误用

一个误用是给静态站硬加动态功能。评论、搜索和购物车都要接外部服务,接得多了,站点就不再是纯静态,托管和部署的复杂度也跟着回来。

另一个误用是改了网址不加重定向。构建出来的地址变了,旧地址直接返回 404,之前积累的外部链接全部失效。

还有一个误用是构建产物不做版本管理。脚本和内容都在仓库里,唯独输出目录不入库,换一台机器部署时配置对不上,页面内容就可能出错。

附录

参见

参考资料

官方(境外)

  1. 《Rendering Modes》,Astro Documentation。
  2. 《Get Started》,Eleventy Documentation。
  3. 《了解站点地图》,Google 搜索中心,2025-12-18 更新。
  4. 《如何使用 rel="canonical" 及其他方法指定规范网址》,Google 搜索中心。

官方(国内)

  1. 《百度搜索的工作原理》,百度搜索资源平台,2023-12-21 更新。

第三方

  1. 《Site Generators》,Jamstack。

外部链接

无。