2156 字
11 分钟

极速与安全的终极博弈:Astro 博客结合腾讯云 EdgeOne(海外版)与 Cloudflare 静态托管的双活架构实践

System // AI Analysis Protocol Active
2026-06-20
0 次
0 人

Astro 博客海内外双活分发架构实践 喵~#

一、 核心工程原则:隐私透明与自研闭环 (Core Principles) 喵~#

在系统设计之初,团队便确立了四大底层工程铁律(Engineering Principles),指导所有网络与业务层架构的演进喵:

  • 自主授权与完全退出权 (Consent & Total Opt-Out): 为保障站点防刷安全与基础访问体验,站点接入了必要的分析与监测体系(如自托管 Umami 统计与快猫星云行为监测等 Cookie)喵。但团队坚决恪守用户选择权至上:
    • 完全可拒绝 (Opt-Out Friendly):用户可随时选择“完全不同意”所有分析与行为 Cookie 喵。
    • 零阻断无障碍浏览 (Graceful Fallback):即便用户拒绝所有授权,系统也绝不进行任何访问限制或体验降级,用户依然可以畅通无阻地继续浏览整站全部内容喵!
  • 数据最小化与防追踪 (Privacy-First & Zero PII): 严禁采集个人身份信息(PII),坚决拒绝商业广告追踪与跨站用户画像,所有监测数据仅用于底层服务稳定性巡检与恶意流量清洗喵。
  • 依赖极小化剪枝 (Minimal Dependencies): 拒绝在工程中盲目引入臃肿的外部第三方全家桶,将外部供应链攻击面(Attack Surface)和运行时开销(Runtime Overhead)压缩至理论极限喵。
  • 核心链路最大化自研 (Maximal In-House Engineering): 从身份鉴权、动态 API、写作中台到监控探针,全链路坚持原生自研,切断与外部商业 SaaS 的过度数据交集喵呜!

二、 架构背景与核心指标 (Background & SLO) 喵~#

针对免备案/未在大陆备案的 Astro SSG 静态博客,传统单线 VPS 或单一海外 CDN 存在跨国延迟高、国内丢包严重与恶意盗刷风险喵。

团队在“纯净边缘、自研数据闭环、用户授权尊重”前提下,采用 腾讯云 EdgeOne(海外版)+ Cloudflare Pages 构建海内外双活网络,达成以下服务质量指标(SLO):

  • 延迟指标:中国境内核心地区 TTFB ≤ 50ms;境外各主要大区 TTFB ≤ 30ms 喵。
  • 隐私与风控指标:用户拒绝授权时 Cookie 写入率为 0,无感阻断率 100%;边缘 WAAP 拦截率 100%,被拦截恶意流量计费为 0 喵。
  • 交付指标:Git Push 触发 CI/CD 双端构建与全网节点同步发布耗时 ≤ 90s 喵。

三、 全球双活架构拓扑 (Architecture Topology) 喵~#

graph TD
User([全球用户访问]) --> DNS{DNS 智能分流解析}
DNS -->|境内线路 (免备案加速)| EO[腾讯云 EdgeOne 海外版<br/>中国香港 Anycast 边缘 PoP]
DNS -->|境外线路 (全球骨干网)| CF[Cloudflare Pages<br/>全球 300+ 边缘数据中心]
subgraph 境内流量链路 (边缘分发 + 快猫星云风控/Cookie 严格遵循用户授权)
EO -->|WAAP 防刷 / 速率限制| EOHost[(EdgeOne 静态托管存储)]
end
subgraph 境外流量链路 (边缘分发 + 自托管 Umami/Cookie 严格遵循用户授权)
CF -->|HTTP/3 0-RTT / 无限带宽| CFPages[(Cloudflare 分布式边缘)]
end
subgraph 纯自研 CI/CD 自动化流水线
Dev([Git Push main]) --> GHA[GitHub Actions]
GHA -->|Astro 构建 dist/| GHA
GHA -->|teo cli 同步 & Purge| EO
GHA -->|wrangler pages deploy| CF
end

四、 选型决策矩阵 (Decision Matrix) 喵~#

评估维度腾讯云 EdgeOne 海外版(主导境内)Cloudflare Pages(主导境外)
接入网络中国香港及亚太直连优化 Anycast 节点喵全球 300+ 城市 Anycast 边缘 PoP 节点喵
网络时延免备案直连,电信/联通/移动延迟压制在 20ms~50ms 喵依托全球骨干网,HTTP/3 (QUIC) 0-RTT 握手,海外 ~30ms 喵
安全与计费集成 WAAP,被边缘规则拦截的流量不计入账单,杜绝刷量爆破喵不限流量(Unlimited Bandwidth),免疫海外突发流量费用暴击喵
监测与 Cookie 策略接入快猫星云风控监测,严格遵循用户授权;用户选不同意即阻断且继续畅读喵接入自托管 Umami 隐私分析,不存 PII;用户拒绝则直接停止写入并正常提供服务喵

五、 生产落地配置 (Production Implementation) 喵~#

5.1 Astro 静态打包配置 (astro.config.mjs) 喵#

开启 HTML 极限压缩与带 Hash 静态资产分块,保障静态资源的纯净性喵:

import { defineConfig } from 'astro/config';
import tailwind from '@astrojs/tailwind';
import svelte from '@astrojs/svelte';
export default defineConfig({
site: 'https://yaoxi.wiki',
integrations: [tailwind(), svelte()],
compressHTML: true, // 开启原生 HTML 极限压缩
vite: {
build: {
cssCodeSplit: true,
rollupOptions: {
output: {
entryFileNames: 'assets/js/[name].[hash].js',
chunkFileNames: 'assets/js/[name].[hash].js',
assetFileNames: 'assets/[ext]/[name].[hash].[ext]',
}
}
}
}
});

5.2 CI/CD 双端自动化部署流水线 (.github/workflows/deploy.yml) 喵#

name: Deploy Astro Blog to EdgeOne & Cloudflare
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js & pnpm
uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v3
with:
version: 9
- name: Build Astro Site
run: |
pnpm install --frozen-lockfile
pnpm build
# 1. 部署至 Cloudflare Pages (主导境外)
- name: Deploy to Cloudflare Pages
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy ./dist --project-name=yaoxi-blog --commit-dirty=true
# 2. 部署至 腾讯云 EdgeOne 静态托管 (海外版,主导境内)
- name: Deploy to Tencent EdgeOne Static Hosting
env:
TENCENT_SECRET_ID: ${{ secrets.TENCENT_SECRET_ID }}
TENCENT_SECRET_KEY: ${{ secrets.TENCENT_SECRET_KEY }}
EO_ENV_ID: ${{ secrets.EO_ENV_ID }}
run: |
npm install -g @tencentcloud/teo-cli
teo hosting deploy ./dist --env-id $EO_ENV_ID --secret-id $TENCENT_SECRET_ID --secret-key $TENCENT_SECRET_KEY
teo purge cache --env-id $EO_ENV_ID --urls "https://yaoxi.wiki/*" --secret-id $TENCENT_SECRET_ID --secret-key $TENCENT_SECRET_KEY

5.3 边缘缓存与安全策略 (Cache & Security Policies) 喵#

  • 带 Hash 静态资产:配置 Cache-Control: public, max-age=31536000, immutable(强缓存 365 天)喵。
  • HTML 页面:边缘缓存 1 小时,客户端设置为 no-cache 并基于 ETag 进行协商缓存喵。
  • 速率限制 (Rate Limiting):单 IP 在 10s 内静态资源请求超出 200 次即触发边缘 403 阻断或验证码,阻断流量不计费喵。

六、 全栈工程演进路线图:以自研贯彻隐私安全 (Roadmap) 喵~#

[核心准则: 最大化自研,透明授权,绝不强买强卖]
│
├─► [已交付] 原生自研 OAuth 2.0 统一认证中心 SDK
│ ├── 零第三方 SaaS (拒绝凭据上云与跨站数据互通)
│ ├── 原生 Web Crypto API (超轻量纯净底层)
│ ├── HMAC-SHA256 签名与单次 Token 生命周期
│ └── Passkey SSO 免密多端统一鉴权
│
└─► [2026 国庆攻坚] 自研便捷写作系统 + 实时部署监测看板
├── 纯自持 Web/移动端快捷草稿秒发 (无外部中间商)
└── 双端节点同步状态与健康度实时自主巡检

6.1 [已交付里程碑] 原生自研 OAuth 2.0 统一认证中心 SDK 喵#

拒绝接入诸如 Auth0、Firebase 等商业第三方 Auth SaaS,彻底斩断用户凭证和行为数据被跨国收集、画像追踪的风险喵:

  • 原生轻量与零依赖:利用浏览器原生 Web Crypto API 实现加密与解密,无任何第三方依赖库,SDK 仅为常规方案体积的 20% 喵。
  • 数据主权绝对掌控:用户数据完全留存在团队自主可控的鉴权体系内,第三方平台毫无感知喵。
  • 企业级风控架构:
    • HMAC-SHA256 签名:请求携带动态时间戳与防篡改签名,杜绝中间人攻击喵。
    • One-time Token 生命周期:单次 client_request_token 严格一次性销毁,天然免疫重放与劫持喵。
    • Passkey SSO 接入:基于硬件安全密钥免密直连自研认证中心,兼顾极致便捷与零信任安全喵。

6.2 [待做计划事项] 2026 国庆黄金周自研系统攻坚 喵#

坚决不采购或依赖外部第三方现成 SaaS,全流程自研打造高纯净度工作流闭环喵:

自研模块核心技术目标 (坚持零第三方依赖与数据自主)预期收益
✍️ 自研便捷写作系统 (Quick Writing)1. 打造自持轻量 Web/移动端快捷编辑流,草稿数据直存自建存储,绝不经由第三方云笔记转接。
2. Markdown 自动化规范排版与 Frontmatter 格式合规校验。
3. 边缘私有媒体直传与自研 WebP 自动无损压缩转码。
随时随地快捷记录,全流程发文操作周期缩减至秒级,数据 100% 自主掌控喵~
📊 自研实时部署监测系统 (Deployment Monitor)1. 挂载自主研发的 GitHub Actions 流水线探针。
2. 对 EdgeOne(境内)与 Cloudflare(境外)双端边缘状态发起主动健康巡检。
3. 构建自持的全球缓存同步延迟看板与故障告警网络。
彻底摆脱第三方商业监控平台对站点的侵入式探针扫描,实现双端版本 100% 透明可视化喵呜!

这篇文章是否对你有帮助?

联系 赞助

极速与安全的终极博弈:Astro 博客结合腾讯云 EdgeOne(海外版)与 Cloudflare 静态托管的双活架构实践

基于大厂级架构标准,深度拆解 Astro 博客海内外双活分发方案:以用户隐私自主权与核心能力最大化自研为原则,海外版腾讯云 EdgeOne 主导境内流量,Cloudflare 主导境外流量,兼顾低延迟、零计费风控与可随时拒绝的隐私合规实践。

Author
瑶曦
知名科技领域生活UP主
来自博客 Yaoxi Blog

发现错误或想要改进这篇文章?

在 GitHub 上编辑此页
极速与安全的终极博弈:Astro 博客结合腾讯云 EdgeOne(海外版)与 Cloudflare 静态托管的双活架构实践
作者
瑶曦
发布于
2026-06-20
许可协议
CC BY-NC-SA 4.0