一、为什么需要静态化
- SEO 友好:搜索引擎对纯 HTML 最友好;
- 首屏快:CDN 边缘缓存,TTFB < 50ms;
- 抗流量:纯静态资源,无后端压力。
二、整条链路
- 内容生产:管理端 / CLI 写入 MySQL;
- 触发静态化:手动按钮 / 定时 cron / 文章发布事件;
- Handlebars 编译:模板 + 数据 → HTML 字符串;
- puppeteer 渲染:开浏览器 → 注入异步资源 → page.content() 抓最终 HTML;
- 写 dist/:`F:\z_espcool_company\fronted-pc\dist\.html`;
- 推 CDN:ossutil / CDN 刷新;
- 用户访问:CDN 边缘 → HTML → 内嵌 tracker.js → POST /pc-stats/track。
三、关键设计
- 失败重试:3 次指数退避;
- 失败信息持久化:`pc_page_static_files.lastError`;
- 事件触发:`EventEmitter.emit('article.published', id)` → 单页重生成;
- chromium 实例池:`browser-manager` 全局模块复用 puppeteer 实例。
四、特酷实践
特酷信息科技(示例)的 PC 官网采用上述链路,每天凌晨 2 点全量生成一次,文章发布事件触发单页生成,dist 推 OSS + CDN。
