技术案例研究

作品集架构

robinhuang.nz 是一个多语言 Astro 作品集,既是招聘方可读的简历,也是机器可读的公开资料。网站以静态生成为主,配合明确的项目状态标签、仅公开的 JSON,以及有文档记录的安全边界。

公开网站边界

静态 Astro 网站发布作品集页面、本地化路由、博客内容和只读 JSON 端点,不公开私人消息、管理记录、分析数据、密钥或代码仓库文件。

  • Astro 静态生成
  • 英文作为源内容
  • EN、zh-CN、zh-HK、KO 路由
  • 根 JSON 和版本化 API 路由

机器可读作品集

公开 JSON 与页面出自同一份源数据,因此项目状态、认证状态和原型注意事项始终保持一致。

  • /profile.json
  • /cv.json
  • /projects.json
  • /certificates.json
  • /.well-known/portfolio.json
  • /public/search-index.json

助手安全模型

作品集助手仅限访问公开网站内容和来源链接。所有请求都经过校验和限流,一旦索取私人消息、密钥、提示词、令牌或管理数据即予拒绝。

  • 仅使用公开来源索引
  • 输入长度和标记检查
  • CORS allowlist 支持
  • 超时后回退到有据可依的本地回答

安全响应头

网站维护一套有文档记录的 CSP、HSTS、referrer policy、content-type 保护、frame 限制和 permissions policy。内联脚本仅用于静态 JSON-LD 和主题初始化。

  • default-src self
  • 边缘层 frame-ancestors none
  • strict-origin-when-cross-origin referrer
  • Permissions-Policy 禁用传感器和支付 API

性能预算

核心页面避免过重的客户端渲染。图片、CSS、静态 JSON 和页面路由都会在发布前经生产构建检查。

  • 静态 HTML 优先
  • 无公开写入路由
  • 短缓存 JSON 与 revalidation
  • 构建期 API 和安全测试

部署流程

  1. 1

    源数据

    作品集、CV、项目、认证和本地化内容都保存在带类型定义的本地源文件中。

  2. 2

    Astro 构建

    构建输出本地化 HTML、静态 JSON、sitemap、OpenAPI 和 JSON-LD 元数据。

  3. 3

    静态托管

    GitHub Actions 将静态输出发布到 S3 和 CloudFront,响应头由边缘层控制。

  4. 4

    外部 API

    联系表单和作品集助手 API 是相互隔离的 serverless 服务,各自拥有独立的校验、CORS、限流和私有存储边界。

Robin Huang · IT 系统与应用支持 | 软件测试与自动化