[{"data":1,"prerenderedAt":665},["ShallowReactive",2],{"cat-ops":3},[4,284],{"id":5,"title":6,"body":7,"category":265,"cover":266,"date":267,"description":268,"extension":269,"meta":270,"navigation":271,"path":272,"readingMinutes":273,"seo":274,"stem":275,"tags":276,"updated":282,"__hash__":283},"articles\u002Farticles\u002Fstatic-site-cloudflare-pages.md","把动态博客彻底静态化，零成本部署到 Cloudflare Pages",{"type":8,"value":9,"toc":254},"minimark",[10,18,21,25,53,56,67,74,78,94,97,101,112,146,155,159,190,194,197,202,205,208,211,217,223,229,238,244,247],[11,12,13,14],"p",{},"动态 CMS（比如 WordPress）的每一次访问都要经过 PHP 和数据库。流量一大，或者遇到 CC 攻击，CPU 先被耗尽；程序和插件的漏洞，又给了攻击者更多下手的机会。最近一次站点被攻击到服务器 IP 被黑洞、SSH 都连不上，我索性换了思路：",[15,16,17],"strong",{},"把内容生产和对外展示彻底拆开，对外只提供静态文件。",[11,19,20],{},"下面是这套“静态化 + Cloudflare Pages”方案的完整复盘。",[22,23,24],"h2",{"id":24},"为什么选择纯静态",[26,27,28,35,41,47],"ul",{},[29,30,31,34],"li",{},[15,32,33],{},"攻击面小","：没有数据库、没有服务端脚本，对外只有 HTML、CSS、JS 和图片，常见的注入和提权手段无处发力。",[29,36,37,40],{},[15,38,39],{},"速度快","：页面直接由 CDN 边缘节点返回，首字节时间很短，也不用担心高并发把源机器压垮。",[29,42,43,46],{},[15,44,45],{},"运维轻","：不用再管 PHP 版本、数据库备份和插件升级，托管平台负责可用性。",[29,48,49,52],{},[15,50,51],{},"成本低","：Cloudflare Pages 提供免费额度，个人站点通常足够。",[22,54,55],{"id":55},"整体架构",[57,58,64],"pre",{"className":59,"code":61,"language":62,"meta":63},[60],"language-text","编辑者 ──> 私有的 WordPress（仅白名单可访问）\n                 │  静态导出\n                 ▼\n          静态文件 \u002F ZIP\n                 │  上传或 CI 推送\n                 ▼\n        Cloudflare Pages ──> 访客\n","text","",[65,66,61],"code",{"__ignoreMap":63},[11,68,69,70,73],{},"核心思想是：",[15,71,72],{},"WordPress 只负责写文章，不再面向公网","，访客看到的永远是导出后的静态结果。",[22,75,77],{"id":76},"第一步准备一个只给自己用的内容源站","第一步：准备一个“只给自己用”的内容源站",[79,80,81,84,91],"ol",{},[29,82,83],{},"准备一台 2 核 4G 左右的服务器，安装宝塔（aaPanel）等面板，用一个不对外宣传的二级域名搭起 WordPress。",[29,85,86,87,90],{},"在 Nginx 或云安全组中",[15,88,89],{},"只放行你自己的 IP","访问后台和站点。",[29,92,93],{},"之后照常写文章、排版，甚至可以借助 AI 工具辅助创作。",[11,95,96],{},"这台机器配置不用高，因为它基本没有公网访问压力。",[22,98,100],{"id":99},"第二步用插件导出全站静态文件","第二步：用插件导出全站静态文件",[11,102,103,104,107,108,111],{},"在源站安装 ",[15,105,106],{},"Simply Static"," 或 ",[15,109,110],{},"WP2Static","，以 Simply Static 为例：",[79,113,114,117,132,139],{},[29,115,116],{},"后台安装并启用插件；",[29,118,119,120,123,124,107,128,131],{},"将 ",[15,121,122],{},"Delivery Method（交付方式）"," 设为 ",[125,126,127],"em",{},"Local Directory",[125,129,130],{},"ZIP Archive","；",[29,133,134,135,138],{},"把目标地址（Destination URL）设为你",[15,136,137],{},"正式对外的域名","，这样导出的链接才是正确的；",[29,140,141,142,145],{},"点击 ",[15,143,144],{},"Generate Static Files","，插件会爬取全站链接，把文章页、图片、CSS、JS 打包成纯静态结构。",[147,148,149],"blockquote",{},[11,150,151,154],{},[15,152,153],{},"注意","：评论、搜索、会员、表单等需要服务端处理的功能在静态站上会失效。评论可以换成 Waline、Twikoo、Giscus 之类的第三方前端方案，搜索可以用 Pagefind 等纯前端索引替代。",[22,156,158],{"id":157},"第三步部署到-cloudflare-pages","第三步：部署到 Cloudflare Pages",[79,160,161,167,173,176,183],{},[29,162,163,164,131],{},"登录 Cloudflare 控制台，进入 ",[15,165,166],{},"Workers & Pages",[29,168,169,170,131],{},"选择 ",[15,171,172],{},"创建应用程序 → Pages → 上传资产（Upload assets）",[29,174,175],{},"填写项目名，把导出的目录或 ZIP 拖进去；",[29,177,178,179,182],{},"等待几十秒，会得到一个免费的 ",[65,180,181],{},"*.pages.dev"," 地址；",[29,184,185,186,189],{},"在 ",[15,187,188],{},"Custom domains"," 中绑定正式域名。",[22,191,193],{"id":192},"进阶让发布流程自动化","进阶：让发布流程自动化",[11,195,196],{},"每次发文都手动“导出 + 上传”会很烦。可以把链路串起来：",[147,198,199],{},[11,200,201],{},"文章发布 → Webhook 触发 → 自动化工具（如 n8n）执行静态导出 → 调用 Cloudflare API 或 Git 推送 → Pages 自动构建部署",[11,203,204],{},"走到这一步就能实现“写完即上线”的无人值守。",[11,206,207],{},"如果你本来就没有历史包袱，也完全可以放弃 WordPress，直接使用 Nuxt、Astro、Hugo 等静态站点生成器，用 Markdown 写文章、Git 管理内容，部署方式同样是推送到 Pages。",[22,209,210],{"id":210},"常见问题",[11,212,213,216],{},[15,214,215],{},"免费版有流量限制吗？","\n静态资源请求目前没有明显的流量上限，但单个部署有文件数量和单文件体积的限制，具体数值以 Cloudflare 官方文档为准。个人博客一般不会碰到。",[11,218,219,222],{},[15,220,221],{},"不想额外买服务器，可以吗？","\n可以。直接在本机搭 WordPress（或用 Docker），本地导出后上传即可。",[11,224,225,228],{},[15,226,227],{},"必须用 WordPress 吗？","\n不必须。任何能产出静态 HTML 的工具都行，选择取决于你的内容类型和使用习惯。",[11,230,231,234,237],{},[15,232,233],{},"这套方案最大的缺点是什么？",[15,235,236],{},"没有服务端交互能力。"," 会员、付费阅读、原生评论等都做不了，需要这些功能的站点不适合纯静态化。",[11,239,240,243],{},[15,241,242],{},"访问速度如何？","\nCloudflare 在海外表现很好；如果你的主要读者在中国大陆，需要评估线路，必要时选用对大陆更友好的 CDN 或托管方案。",[22,245,246],{"id":246},"小结",[11,248,249,250,253],{},"静态化的本质是",[15,251,252],{},"用构建时的计算换取运行时的安全与速度","。只要你的站点以阅读为主，把内容源站藏在后面、对外只托管静态文件，就能同时得到更低的成本和更强的抗压能力。",{"title":63,"searchDepth":255,"depth":255,"links":256},2,[257,258,259,260,261,262,263,264],{"id":24,"depth":255,"text":24},{"id":55,"depth":255,"text":55},{"id":76,"depth":255,"text":77},{"id":99,"depth":255,"text":100},{"id":157,"depth":255,"text":158},{"id":192,"depth":255,"text":193},{"id":210,"depth":255,"text":210},{"id":246,"depth":255,"text":246},"ops","cdn","2026-06-23","被 CC\u002FDDoS 打到服务器失联之后，我把整站改成纯静态并托管到 CDN。本文复盘“隐藏的内容源站 + 静态导出 + Pages 托管”的完整流程、限制与取舍。","md",{},true,"\u002Farticles\u002Fstatic-site-cloudflare-pages",7,{"title":6,"description":268},"articles\u002Fstatic-site-cloudflare-pages",[277,278,279,280,281],"Cloudflare","静态站点","WordPress","部署","安全",null,"rnV8251fEZv245JjyjMmVSdlrk4Jzf1uAZYwE1fOK7U",{"id":285,"title":286,"body":287,"category":265,"cover":538,"date":652,"description":653,"extension":269,"meta":654,"navigation":271,"path":655,"readingMinutes":656,"seo":657,"stem":658,"tags":659,"updated":282,"__hash__":664},"articles\u002Farticles\u002Flinux-enable-bbr.md","Linux 开启 BBR 拥塞控制：原生配置与一键脚本两种做法",{"type":8,"value":288,"toc":641},[289,296,299,303,306,317,322,325,328,365,368,371,430,437,441,444,449,480,485,497,502,533,544,549,556,560,563,574,577,594,596,602,608,614,616,637],[11,290,291,292,295],{},"买了一台标称 1 Gbps 的 VPS，实测下载却只有几百 KB\u002Fs——这种情况很常见，而且不一定是带宽不够。跨洲链路天然带有较高的延迟和丢包，系统默认的 TCP 拥塞控制算法一旦“感觉”到丢包，就会急刹车，把发送速率压得很低。",[15,293,294],{},"BBR"," 就是为了解决这个问题而出现的。",[11,297,298],{},"本文按“先理解、再选择、后动手”的顺序，讲清楚怎样在 Linux 服务器上启用 BBR。",[22,300,302],{"id":301},"bbr-到底改变了什么","BBR 到底改变了什么",[11,304,305],{},"传统算法（例如 CUBIC）把“丢包”当作网络拥塞的信号：只要出现丢包，就大幅降低发送窗口，之后再慢慢回升。在丢包并不代表拥塞的长距离链路上，这种策略会白白浪费带宽。",[11,307,308,309,312,313,316],{},"BBR（Bottleneck Bandwidth and Round-trip propagation time）由 Google 提出，思路是主动测量链路的",[15,310,311],{},"瓶颈带宽","与",[15,314,315],{},"往返时延","，据此估算最合适的发送速率，而不是被动地等丢包再减速。因此在存在一定随机丢包的海外线路上，它往往能明显提高吞吐。",[147,318,319],{},[11,320,321],{},"BBR 优化的是“因丢包导致的不必要降速”。如果链路本身的物理带宽很小，或者被运营商限速，任何算法都无法突破上限。",[22,323,324],{"id":324},"先看看内核支持情况",[11,326,327],{},"BBR 从 Linux 4.9 内核开始内置。先确认当前内核版本和已启用的算法：",[57,329,333],{"className":330,"code":331,"language":332,"meta":63,"style":63},"language-bash shiki shiki-themes github-light","uname -r\nsysctl net.ipv4.tcp_congestion_control\nsysctl net.ipv4.tcp_available_congestion_control\n","bash",[65,334,335,348,357],{"__ignoreMap":63},[336,337,340,344],"span",{"class":338,"line":339},"line",1,[336,341,343],{"class":342},"s7eDp","uname",[336,345,347],{"class":346},"sYu0t"," -r\n",[336,349,350,353],{"class":338,"line":255},[336,351,352],{"class":342},"sysctl",[336,354,356],{"class":355},"sYBdl"," net.ipv4.tcp_congestion_control\n",[336,358,360,362],{"class":338,"line":359},3,[336,361,352],{"class":342},[336,363,364],{"class":355}," net.ipv4.tcp_available_congestion_control\n",[11,366,367],{},"当前主流发行版（Ubuntu 22.04 \u002F 24.04、Debian 11 \u002F 12 等）的内核都远高于 4.9，可以直接使用原生 BBR，不需要更换内核。",[22,369,370],{"id":370},"几个版本该怎么选",[372,373,374,390],"table",{},[375,376,377],"thead",{},[378,379,380,384,387],"tr",{},[381,382,383],"th",{},"方案",[381,385,386],{},"特点",[381,388,389],{},"适用场景",[391,392,393,408,419],"tbody",{},[378,394,395,399,402],{},[396,397,398],"td",{},"原生 BBR",[396,400,401],{},"稳定、兼容性最好，随内核维护",[396,403,404,405],{},"绝大多数服务器，",[15,406,407],{},"首选",[378,409,410,413,416],{},[396,411,412],{},"BBRplus",[396,414,415],{},"对传输机制做了修改，在极差的跨海链路上更激进",[396,417,418],{},"老系统或确有需要的场景",[378,420,421,424,427],{},[396,422,423],{},"BBR2 \u002F 其他魔改版",[396,425,426],{},"理论上限更高，但需要第三方内核，存在崩溃风险",[396,428,429],{},"实验与折腾，不建议生产使用",[11,431,432,433,436],{},"结论很简单：",[15,434,435],{},"能用原生就用原生","，把魔改内核留给确实有需求、也有能力救机器的人。",[22,438,440],{"id":439},"方法一原生-bbr推荐","方法一：原生 BBR（推荐）",[11,442,443],{},"内核不低于 4.9 时，三步即可完成。",[11,445,446],{},[15,447,448],{},"1. 写入系统参数",[57,450,452],{"className":330,"code":451,"language":332,"meta":63,"style":63},"echo \"net.core.default_qdisc=fq\" >> \u002Fetc\u002Fsysctl.conf\necho \"net.ipv4.tcp_congestion_control=bbr\" >> \u002Fetc\u002Fsysctl.conf\n",[65,453,454,469],{"__ignoreMap":63},[336,455,456,459,462,466],{"class":338,"line":339},[336,457,458],{"class":346},"echo",[336,460,461],{"class":355}," \"net.core.default_qdisc=fq\"",[336,463,465],{"class":464},"sD7c4"," >>",[336,467,468],{"class":355}," \u002Fetc\u002Fsysctl.conf\n",[336,470,471,473,476,478],{"class":338,"line":255},[336,472,458],{"class":346},[336,474,475],{"class":355}," \"net.ipv4.tcp_congestion_control=bbr\"",[336,477,465],{"class":464},[336,479,468],{"class":355},[11,481,482],{},[15,483,484],{},"2. 让配置立即生效",[57,486,488],{"className":330,"code":487,"language":332,"meta":63,"style":63},"sysctl -p\n",[65,489,490],{"__ignoreMap":63},[336,491,492,494],{"class":338,"line":339},[336,493,352],{"class":342},[336,495,496],{"class":346}," -p\n",[11,498,499],{},[15,500,501],{},"3. 验证结果",[57,503,505],{"className":330,"code":504,"language":332,"meta":63,"style":63},"sysctl net.ipv4.tcp_congestion_control\n# 期望输出：net.ipv4.tcp_congestion_control = bbr\nlsmod | grep bbr\n",[65,506,507,513,519],{"__ignoreMap":63},[336,508,509,511],{"class":338,"line":339},[336,510,352],{"class":342},[336,512,356],{"class":355},[336,514,515],{"class":338,"line":255},[336,516,518],{"class":517},"sAwPA","# 期望输出：net.ipv4.tcp_congestion_control = bbr\n",[336,520,521,524,527,530],{"class":338,"line":359},[336,522,523],{"class":342},"lsmod",[336,525,526],{"class":464}," |",[336,528,529],{"class":342}," grep",[336,531,532],{"class":355}," bbr\n",[11,534,535,536,539,540,543],{},"输出里出现 ",[65,537,538],{},"bbr","，就说明已经生效。注意重复执行第 1 步会往文件里追加重复行，不影响功能，但建议事后打开 ",[65,541,542],{},"\u002Fetc\u002Fsysctl.conf"," 清理一下。",[545,546,548],"h3",{"id":547},"为什么要同时设置-fq","为什么要同时设置 fq",[11,550,551,552,555],{},"BBR 依赖**公平队列（Fair Queuing，fq）**来控制数据包的发送间隔（pacing）。",[65,553,554],{},"net.core.default_qdisc=fq"," 这一行不能漏，否则 BBR 的节奏控制会打折扣。",[22,557,559],{"id":558},"方法二使用社区的一键脚本","方法二：使用社区的一键脚本",[11,561,562],{},"如果系统很老（比如 CentOS 7，内核低于 4.9），或者想试试 BBRplus，需要先更换内核，手工操作风险较大。社区里有一个流传很广的“四合一”脚本（项目名 Linux-NetSpeed）可以简化流程，大致步骤是：",[79,564,565,568,571],{},[29,566,567],{},"下载并运行脚本，先选择“安装内核”（想试 BBRplus 就选对应内核）；",[29,569,570],{},"重启服务器；",[29,572,573],{},"重启后再次运行脚本，选择“开启加速”。",[11,575,576],{},"执行前请注意三点：",[26,578,579,585,591],{},[29,580,581,584],{},[15,582,583],{},"先做快照或备份","。更换内核是有风险的操作，一旦无法引导，只能靠云厂商的 VNC \u002F 救援模式。",[29,586,587,590],{},[15,588,589],{},"运行任何第三方脚本前，先读一遍源码","，确认它做了什么再执行。",[29,592,593],{},"能升级系统就别硬撑老系统：换成较新的 Ubuntu \u002F Debian，用原生 BBR 更省心。",[22,595,210],{"id":210},[11,597,598,601],{},[15,599,600],{},"开启 BBR 会被服务商认为滥用带宽吗？","\n不会。BBR 只是调整数据发送的节奏，属于正常的内核调优，主流云厂商的默认镜像里也已经在使用。",[11,603,604,607],{},[15,605,606],{},"开启后速度没有明显变化，是为什么？","\n先排查物理带宽上限、运营商限速（QoS）、对端服务器自身的出口限制。BBR 只能缓解“丢包导致的降速”，对本来就很窄的链路无能为力。",[11,609,610,613],{},[15,611,612],{},"BBRplus 会让系统不稳定吗？","\n在 CentOS 7 上确实有过更换内核后无法正常启动的案例。如果不是非用不可，建议使用新版 Ubuntu \u002F Debian 搭配原生 BBR。",[22,615,246],{"id":246},[26,617,618,624,631,634],{},[29,619,620,621,623],{},"内核 ≥ 4.9：直接写入两行 sysctl 参数，用 ",[65,622,352],{}," 验证即可；",[29,625,626,627,630],{},"同时启用 ",[65,628,629],{},"fq"," 队列，不要漏；",[29,632,633],{},"需要换内核的老系统，务必先备份，并审阅脚本；",[29,635,636],{},"BBR 不是万能药，它解决的是丢包造成的降速，不是带宽不足。",[638,639,640],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":63,"searchDepth":255,"depth":255,"links":642},[643,644,645,646,649,650,651],{"id":301,"depth":255,"text":302},{"id":324,"depth":255,"text":324},{"id":370,"depth":255,"text":370},{"id":439,"depth":255,"text":440,"children":647},[648],{"id":547,"depth":359,"text":548},{"id":558,"depth":255,"text":559},{"id":210,"depth":255,"text":210},{"id":246,"depth":255,"text":246},"2026-03-09","带宽明明很大，下载速度却上不去？多半是 TCP 拥塞控制算法拖了后腿。本文梳理 BBR 的原理、版本选择、原生开启步骤、脚本方案与常见问题。",{},"\u002Farticles\u002Flinux-enable-bbr",6,{"title":286,"description":653},"articles\u002Flinux-enable-bbr",[660,294,661,662,663],"Linux","TCP","网络优化","VPS","mGJgCO6xc4rZwEOGpQEhgBEyXfPwbcDc3pvF30rK4mE",1792993223437]