SeerKing 发布的文章

个人图库/静态资源站最优省钱架构

搭建个人图库或静态资源站,最大的痛点不是技术,而是成本。图片和视频文件大、访问频率高,传统方案动辄月费几十上百。今天分享一套实测可用的架构:Cloudflare R2 免费存储 + 已备案加速域名走国内 CDN + 未备案域名绑定 R2 充当源站,10GB 素材常年月消费 0 元。

核心架构:两套域名,各司其职

这套方案的精髓在于源站域名和加速域名拆分

角色 域名要求 用途
R2 源站域名 未备案域名(.top/.xyz 等) 仅做国内 CDN 回源地址,不面向用户
前端加速域名 已备案二级域名(img.xxx.com) 访客实际访问地址,接入国内 CDN

政策解读:工信部只要求面向国内用户的加速域名备案,源站域名在境外 Cloudflare 托管、仅做回源,无备案要求。

访问链路

国内用户:访问已备案 img.xxx.com → 国内 CDN 命中缓存直接返回(0 回源流量)→ 未命中则回源到未备案 R2 域名 → CF 拉取 R2 文件 → 缓存 365 天

海外用户:DNS 不走国内 CDN,直接解析到 Cloudflare → CF 全球节点免费读取 R2 资源,全程不消耗国内计费流量

两种落地配置

方案一:正式推荐(源站独立未备案域名)

  1. 准备 1 个未备案域名,NS 接入 Cloudflare
  2. R2 存储桶绑定该域名(如 source.abc.xyz),CF 开启 SSL
  3. 国内 CDN 添加已备案加速域名 img.xxx.com,回源 HOST 填 source.abc.xyz
  4. DNS 分流:img.xxx.com 国内 CNAME 到 CDN,海外交由 CF 接管

✅ 优势:源站和加速域名隔离,方便在 CF 配置 WAF/Referer 防盗链,双重防护。

方案二:极简测试(r2.dev 默认域名)

直接用桶自带的 xxx.r2.dev 做回源地址,无需额外域名。缺点是 CF 有隐性限流,无法精细化防护,仅适合临时测试。

长效缓存配置(省钱核心)

文件类型 缓存时长
图片(JPG/PNG/WebP/GIF)、ICO 365 天
MP4 短视频、静态附件 365 天
JS/CSS 静态脚本 30 天

省钱逻辑:10GB 素材首次全量访问仅一次性回源,后续 365 天全部命中缓存,不再回源 R2,无新增计费流量。

CDN 费用测算(10GB 存量)

  • 七牛云 CDN:新用户每月赠送 10GB 免费流量,首月回源吃光免费额度 = 0 账单;缓存生效后全年 0 费用
  • 百度智能云 CDN:100GB 包年 18 元,覆盖全年零星回源,封顶年费 18 元

正常不手动全量刷新缓存、不频繁替换资源,全站点年成本 0~20 元

五层防盗刷

盗刷分为第三方外链盗图和恶意爬虫批量抓取两类,双层防护锁死账单上限:

  1. CDN Referer 白名单:填写 *.你的备案域名,拦截空 Referer 请求,其他网站外链直接返回 403
  2. CDN 月度流量封顶:按月设置上限 10GB,触达自动关停,账单永不超标
  3. 单 IP 下载限速:限制 200~500KB/s,爬虫无法短时间跑满流量
  4. CF 源站二次防护:设置 Referer 白名单仅放行 CDN 回源 IP;WAF 拦截 python/curl/wget 等爬虫 UA
  5. URL 时效防盗链(进阶):高清原图开启签名鉴权,链接带时效密钥,到期自动失效

避坑要点

  • 严格拆分两套域名:加速域名 = 备案(用户访问),R2 源域名 = 未备案(仅回源)
  • 源站域名全程托管 CF,不做国内 DNS 解析
  • 海外用户全部走 CF 免费 CDN,不消耗国内付费流量
  • 禁止 CDN 后台一键全量刷新,会触发整站重新回源,消耗免费额度

总结

「备案域名做前端加速 + 未备案域名绑定 R2 充当源站」的拆分方案,既符合国内备案法规,又利用 R2 10GB 永久免费存储 + 365 天长缓存实现近乎零成本运营,叠加多层防盗链规避恶意刷流量,是目前个人静态资源站性价比最高、落地最稳妥的方案。

前言

Cloudflare R2 这东西,我用了一年多了,最大的感受就两个字——真香。存储便宜,流量不要钱,特别适合我这种喜欢拍视频又舍不得买大带宽服务器的。

但 R2 有个坑:直接拿它默认的 .r2.dev 域名用,速度慢得离谱,还动不动触发限流。踩过这个坑之后,我摸索了一套让它真正"好用"的方案,今天分享出来。

第一步:绑定自定义域名

这一步是必须的,别偷懒。默认的 .r2.dev 域名只配用来做开发测试,平时用真心不行。

操作很简单:

  • 进 Cloudflare 控制台,找到你的 R2 存储桶
  • 设置 → 自定义域名 → 绑定一个托管在 Cloudflare 的域名(比如 res.yourdomain.com

绑完以后,所有请求都会自动走 Cloudflare 的全球 CDN 节点,速度直接从"拖拉机"变成"高铁"。

第二步:配置缓存规则

绑了域名不等于万事大吉。Cloudflare 默认不会缓存所有媒体文件,你不动手配一下,每次访问还是回源,白费了 CDN 的优势。

进 Cloudflare 控制台 → 缓存 → 缓存规则,新建一条规则:

  • 字段选 URI Path,包含 .mp4(图片的话再加 .jpg.png
  • 或者直接匹配主机名等于你绑的 R2 子域名
  • 缓存设置选「符合缓存条件」,边缘缓存 TTL 设一个月

媒体文件一般不常改,缓存一个月完全没问题。设好之后,用户第一次访问会回源拉取,之后就是边缘节点直出,秒开。

第三步:视频的流式播放优化

图片还好,视频才是大头。视频文件大,用户还喜欢拖进度条,搞不好就很卡。

好消息是 R2 原生支持 Accept-Ranges: bytes,也就是 HTTP Range Requests。用 HTML5 的 <video> 标签直接播放,浏览器会自动请求视频片段,实现边下边播,拖动进度条也没问题。

如果视频特别大(几个 G 的高清长视频),建议上传前用 FFmpeg 转码切片成 HLS(.m3u8)格式,配合 hls.js 播放器,能做到自适应码率。不过大多数情况直接传 MP4 就够用,别过度折腾。

第四步:搭建观看界面

R2 只是个仓库,你还需要个架子来展示。我试过几种方案:

方案 A:AList(最推荐)

用 Docker 部署一个 AList,通过 S3 协议挂载 R2。它自带文件管理、图片画廊、视频播放器,界面还挺好看。配好之后跟浏览本地网盘一样,手机上也能直接看。

方案 B:已有博客直接引用

像我现在用的 Typecho,直接插 HTML 就完事:

<video controls preload="metadata" width="100%">
  <source src="https://你的自定义域名/video.mp4" type="video/mp4">
</video>
<img src="https://你的自定义域名/photo.jpg" alt="照片">

方案 C:Cloudflare Workers 纯 Serverless

如果你像我一样有台甲骨文 ARM 闲着也是闲着,可以直接用 Workers 绑定 R2,写个简单脚本动态生成页面。不需要 VPS,完全 Serverless。

总结

核心就两步:绑定自定义域名 + 配好 Cache Rules。搞定了这两件事,R2 就直接从"测试工具"变成"生产级媒体存储"了。

至于前端展示,看你个人习惯。喜欢省事的用 AList,喜欢折腾的写 Workers,跟我一样有博客的直接内嵌 HTML 标签,哪种都行。

升级到 Windows 11 后,你最不习惯的改动是什么?

对我而言,首当其冲的就是那个被"折叠"的鼠标右键菜单。每次想要使用解压软件、Git 选项、VS Code 打开文件夹,或是其他第三方工具的快捷操作时,都不得不额外点击一次「显示更多选项」(或者按 Shift + F10)。

日常操作中,这个额外的步骤每几分钟就打断一次工作流,日积月累浪费的时间相当可观。今天就来分享一个最简单、最安全的原生解决方案——无需安装任何第三方软件,只需执行两行命令,即可永久找回熟悉的完整右键菜单。

原理:为什么会有两个菜单?

Windows 11 引入了全新的现代化右键菜单设计,采用了圆角卡片样式和图标化的按钮布局。新菜单将常用操作(剪切、复制、重命名、删除)放在顶部工具栏,而将其他第三方应用集成收起到二级菜单中。

这个设计的初衷是减少菜单长度、提高触屏和触控板操作体验。但对于桌面重度用户来说,频繁访问的第三方工具(压缩软件、Git、编辑器等)反而被隐藏了,效率大打折扣。

解决方案通过修改注册表中的一个 CLSID(类标识符)键值,告诉 Windows 系统直接显示完整菜单,绕过了新菜单的"折叠"逻辑。

操作步骤

第一步:打开命令提示符

按下键盘上的 Win + R 快捷键,呼出「运行」窗口。在输入框中输入 cmd,然后按下回车键。

如果你习惯使用管理员身份运行,可以按 Ctrl + Shift + Enter 直接以管理员权限打开——不过对于本次操作,普通权限已经足够了。

第二步:写入注册表命令

在弹出的黑色命令提示符窗口中,复制以下这行命令,在窗口内点击鼠标右键即可自动粘贴,然后按回车执行:

reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
✅ 操作成功——当你看到屏幕上提示「操作成功完成」时,说明系统的注册表修改已经生效。

第三步:重启资源管理器

注册表修改完成后,需要让桌面进程重新加载才能看到效果。无需重启电脑,继续在同一个 CMD 窗口中粘贴并执行以下命令:

taskkill /f /im explorer.exe & start explorer.exe
⚠️ 注意——执行后,你的桌面图标和底部任务栏会短暂消失几秒钟然后重新出现。这是系统在刷新界面的正常现象,不必担心。

加载完毕后,在桌面或任意文件上点击鼠标右键——你会发现那个高效、直观、一目了然的传统完整菜单已经回来了!

效果对比

项目修改前修改后
菜单结构折叠菜单,需点击「显示更多选项」完整菜单,一次性展示所有选项
第三方工具默认隐藏,需额外操作才能访问直接可见,一键使用
操作效率每次右键需 1~2 次点击右键即用,无需多余操作
安全性无需任何修改仅修改当前用户 HKCU 注册表,安全可逆

如何恢复默认折叠菜单?

如果你以后想换回 Windows 11 原生的现代化折叠菜单,操作同样简单,只需执行删除注册表键值的命令即可。

重复第一步打开 CMD 窗口,执行以下命令:

reg delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f
✅ 恢复成功——执行成功后,再次运行第三步的重启资源管理器命令(或者直接重启电脑),右键菜单就会恢复成 Win11 刚安装时的默认模样。

总结

这个注册表修改方案的优势在于:

  • 零成本——无需安装任何第三方右键管理工具
  • 安全可逆——修改的是当前用户下的 HKCU 注册表,不涉及系统级设置,随时可以恢复
  • 一次修改,永久生效——除非重装系统或手动恢复,修改效果会一直保持
  • 无需重启——通过重启资源管理器即可立即生效

如果你也觉得 Windows 11 的折叠右键菜单影响工作效率,不妨试试这个方法。两行命令,换回更顺手的操作体验。