技术架构

系统架构全景

Nuxt 4 PPR × Cloudflare Edge × 六维 SEO 工程化

01

渲染策略:PPR 混合渲染

按路由精细控制渲染模式,兼顾 SEO 与动态交互。

文章 / 分类页

SSG
  • ·构建时预渲染为静态 HTML
  • ·CDN 直接命中,TTFB < 50ms
  • ·Nuxt Content queryCollection
  • ·路由:/articles/:slug, /categories/:slug

搜索 / 看板页

SSR
  • ·每次请求动态渲染
  • ·依赖实时数据库查询
  • ·routeRules: { ssr: true }
  • ·路由:/search, /dashboard, /landing

登录 / 用户页

SPA
  • ·纯客户端渲染
  • ·无需 SEO 索引
  • ·server: false 组件
  • ·路由:/login, /about
02

存储架构:双驱动 Repository Pattern

单一 Drizzle Schema,通过 STORAGE_DRIVER 环境变量切换驱动,生产与本地完全隔离。

Cloudflare D1 + KV

生产 · 已部署
  • ·D1:SQLite-on-edge,全球分布
  • ·KV:SEO 检测缓存、行为事件存储
  • ·STORAGE_DRIVER=cf(wrangler.toml)
  • ·server/repositories/*.cf.ts

SQLite 或 PostgreSQL(二选一)

本地开发
  • ·SQLite:.dev.db,STORAGE_DRIVER=sqlite,零配置
  • ·PostgreSQL:docker-compose,STORAGE_DRIVER=node
  • ·两种驱动均实现相同 Repository 接口
  • ·server/repositories/*.node.ts
数据表: users · sms_codes · refresh_tokens · comments · bookmarks · reading_history · search_index · seo_checks · behavior_events · category_subscriptions
03

认证体系:短信免密 + 双 JWT

阿里云 SMS 验证码

登录流程
  • ·POST /api/auth/send-code → 阿里云 SMS
  • ·6位验证码,5分钟有效
  • ·POST /api/auth/verify → 校验 + 签发 JWT
  • ·首次登录自动注册

双 JWT 无感刷新

令牌策略
  • ·Access Token:15分钟,Bearer Header
  • ·Refresh Token:7天,httpOnly Cookie
  • ·自动续期:401 时静默刷新
  • ·JTI 黑名单防重放
04

全文搜索:自建 TF-IDF 倒排索引

无需 Elasticsearch,构建时生成索引写入 D1,运行时纯 SQL 检索。

索引生成

构建期
  • ·遍历所有 Markdown 文章
  • ·中文分词 + 停用词过滤
  • ·计算 TF-IDF 权重
  • ·批量写入 search_index 表

检索逻辑

运行期
  • ·GET /api/search?q=关键词
  • ·分词后查 search_index
  • ·按 tfidf_score 排序
  • ·返回 article_slug 列表

能力边界

特性
  • ·支持多词 AND 检索
  • ·无外部依赖,边缘可运行
  • ·索引随构建自动更新
  • ·当前索引:~9900 词条
05

六维 SEO 工程化

PageSpeed Insights

① 技术SEO
  • ·LCP / INP / CLS / FCP / TTFB
  • ·Mobile + Desktop 双策略
  • ·SSE 流式推送检测进度
  • ·结果持久化至 D1

元数据完整性

② 内容SEO
  • ·title / description / canonical
  • ·JSON-LD 结构化数据
  • ·Organization + WebSite Schema
  • ·Open Graph / Twitter Card

构建时静态检查

③ 工程化
  • ·vite-plugin-seo-check
  • ·titleSlug 唯一性(error)
  • ·meta description 完整性(error)
  • ·正文字数 ≥ 300(warn)

AI 爬虫优化

④ AEO
  • ·robots.txt 允许 GPTBot / anthropic-ai
  • ·PerplexityBot / OAI-SearchBot
  • ·Sitemap 51 个 URL
  • ·JSON-LD 结构化问答数据

真实用户监控

⑤ RUM
  • ·web-vitals.client.ts 采集
  • ·LCP / INP / CLS / FCP / TTFB
  • ·POST /api/metrics/vitals
  • ·KV 存储 7 天滚动窗口

GitHub Actions 定时生成

⑥ 内容自动化
  • ·cron 每7天触发,支持手动 dispatch
  • ·调用外部 AI 接口生成长尾词标题
  • ·按分类主题生成 Markdown 文章
  • ·自动 PR → squash merge → CF Pages 重新构建

实时 SEO 看板

看板
  • ·历史趋势评级色块时间线
  • ·All / Mobile / Desktop 切换
  • ·内容SEO + AEO 自检状态
  • ·默认展示最近一次检测
06

部署架构:双平台单配置

Cloudflare Pages + Workers

已部署 · 生产
  • ·BUILD_TARGET=cf nuxt build --preset=cloudflare-pages
  • ·_routes.json 精细路由控制
  • ·D1 绑定 + KV 命名空间
  • ·全球 CDN 边缘节点

VPS Docker(未上线)

备用配置
  • ·BUILD_TARGET=node nuxt build
  • ·docker-compose + nginx 反代
  • ·PostgreSQL + Redis 容器
  • ·可部署至 Zeabur 或自建 VPS