站点结构
site/
├── index.html # FUN hero + 主站(含数据调用入口)
├── data.json # 全国全量 JSON(meta/stats/32省/389城全量明细/美食榜/商圈榜)
├── data.md # 全国全量 Markdown(目录+统计+32省索引+389城档案+附录)
├── assets/ # style.css / app.js(零依赖)
├── cities/<adcode>.html # 城市页(389)
├── cities/<市名>.html # 城市名 URL 兼容存根 → 跳转 adcode 页
├── provinces/<省>.html # 省份页(32)
├── api.html # 数据接口文档
├── sources.html # 数据来源
├── 404.html # FUN 风格错误页
├── robots.txt · sitemap.xml # SEO(389 城 + 省页 + 文档页)
├── _headers # Cloudflare Pages 缓存规则
├── CNAME # fun.worldstip.com
└── README.html # 本页
fun.worldstip.com 部署(Cloudflare Pages)
- 构建命令:留空(纯静态);输出目录:
site。
- DNS:
fun CNAME 到 Cloudflare Pages 域名,橙色云 proxied。
- 缓存规则已随站交付(
_headers):/data.json 与 /data.md 24h、/assets/* 一年 immutable、HTML 1h。
- 备选:GitHub Pages(本仓库根目录 + Actions)、Netlify Drop、任意 Nginx。
直接上传产品(零配置上线)
- 交付物
fun-site-upload.zip 为 site/ 的完整打包(含 CNAME / _headers / robots / sitemap / 404),解压即传、无需构建。
- Netlify Drop:app.netlify.com/drop 拖入 zip 或解压后的文件夹 → 秒级上线,自定义域名绑定 fun.worldstip.com。
- Cloudflare Pages 直传:Direct Upload 选该目录;GitHub Pages:推送本仓库后 Settings → Pages 选 main 分支根目录。
- 任意 Nginx/宝塔:解压到站点根目录,
try_files $uri $uri/ /404.html 即可。
GitHub 备份
- 仓库:MrdT-BitsNote/fun(public)。
- 纳入版本管理:
site/(网站 + JSON/MD 数据接口)与 data/(md 档案源)。
- 不入库:
.cache/(高德采集缓存,162MB 级)。
重新生成
python tools/build_api.py # md 档案 → JSON 数据层(site/api + site/md 全量内容)
python tools/build_fun_site.py # JSON → 网站(site/*.html + assets + 部署资产)
python tools/validate_data.py # C1–C10 数据校验