# 部署说明（DEPLOY.md 模板）

dist/ 即全部部署物：纯静态文件，无服务端、无运行时依赖。任意静态主机可部署。

> 边界：实际部署到 idbots.ai 属上线动作，需 owner 批准后另行执行；本文件只提供操作说明。

## 方式一：nginx（自管服务器）

```nginx
server {
    listen 443 ssl http2;
    server_name idbots.ai;
    root /var/www/idbots-site/dist;
    index index.html;

    # 带指纹资源长缓存
    location /assets/ {
        add_header Cache-Control "public, max-age=31536000, immutable";
    }

    # 入口不缓存，发版即生效
    location = /index.html {
        add_header Cache-Control "no-cache";
    }

    # dmg/exe 不做压缩（源站 OSS 已直出，压缩 300MB 纯耗 CPU）
    location ~* \.(dmg|exe)$ {
        gzip off;
        add_header Cache-Control "public, max-age=86400";
    }
}
# www 与裸域 301 统一；HTTP 80 全量 301 到 HTTPS
```

## 方式二：对象存储 + CDN

download 子域现走 OSS + Tengine 链路，主站沿用同套：dist/ 全量上传，仅 index.html 设不缓存，其余（/assets/ 带指纹文件）设长缓存。

## 方式三：Cloudflare Pages（备选）

直接拖 dist/ 目录，或连 Git 仓库构建命令 `npm ci && npm run build`、输出目录 `dist`。

## 上线动作清单

1. `npm run build && npm run verify:links -- --http` 通过后再上传
2. 旧入口 301 兜底：旧站为单页 SPA 壳，外链若有子路径一律 301 到首页
3. sitemap.xml 的 lastmod 填上线日，提交 Search Console
4. og.png 替换后，在社交平台侧触发一次重新抓取（旧 lovable.app 卡片自然过期）
