Files
termi-blog/frontend
limitcool 381dc9b854
Some checks failed
docker-images / resolve-build-targets (push) Successful in 5s
docker-images / build-and-push (admin) (push) Successful in 30s
docker-images / submit-indexnow (push) Has been cancelled
docker-images / build-and-push (frontend) (push) Has been cancelled
docker-images / build-and-push (backend) (push) Has been cancelled
Fix web push delivery handling and worker console
2026-04-04 04:15:20 +08:00
..

frontend

Astro 前台站点,当前运行模式为:

  • output: 'server'
  • @astrojs/node standalone
  • 少量 Svelte 组件用于客户端激活

常用命令

pnpm install
pnpm dev
pnpm build

默认本地开发端口:

  • frontend: 4321

API 地址约定

前台现在区分两类 API 地址:

  • INTERNAL_API_BASE_URL
    • 给 Astro SSR / Node 服务端渲染访问 backend 用
    • docker compose 默认推荐:http://backend:5150/api
  • PUBLIC_API_BASE_URL
    • 给浏览器里的评论、AI 问答、搜索等请求用
    • 如果不设置,生产环境会回退到“当前访问主机 + :5150/api

如果你走正式域名 / HTTPS / 反向代理,建议显式设置:

PUBLIC_API_BASE_URL=https://api.blog.init.cool

图片处理链

前台现在额外带了一个 SSR 图片优化端点:

  • /_img

它会对同域图片做:

  • 响应式尺寸裁切/缩放
  • AVIF / WebP / JPEG|PNG 输出
  • 前台卡片 / 文章页封面的 srcset 生成

如果你的封面图来自额外 CDN / R2 公网域名,需要给 frontend 运行时增加:

PUBLIC_IMAGE_ALLOWED_HOSTS=cdn.example.com,pub-xxxx.r2.dev

admin 侧上传封面时也会额外做:

  • 上传前压缩
  • 16:9 封面规范化
  • 优先转为 AVIF / WebP

GEO / AI 搜索补充

前台现在额外提供:

  • /llms.txt
  • /llms-full.txt
  • /indexnow-key.txt(仅在配置 INDEXNOW_KEY 时可用)

如果你想在发布后主动推送 IndexNow可以配置

INDEXNOW_KEY=your-indexnow-key
SITE_URL=https://your-frontend.example.com
PUBLIC_API_BASE_URL=https://your-frontend.example.com/api

然后运行:

pnpm indexnow:submit

脚本会自动收集首页、文章、分类、标签、评测等 canonical URL 并提交到 IndexNow。