<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cloudflare on BenzHub</title><link>https://benzhub.github.io/tags/cloudflare/</link><description>Recent content in Cloudflare on BenzHub</description><generator>Hugo</generator><language>zh-TW</language><lastBuildDate>Sun, 09 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://benzhub.github.io/tags/cloudflare/index.xml" rel="self" type="application/rss+xml"/><item><title>Workers Cron Triggers 排程:scheduled handler 與 cron 表達式實戰 | Cloudflare 完整教學</title><link>https://benzhub.github.io/post/cloudflare/009-cron-triggers/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/cloudflare/009-cron-triggers/</guid><description>&lt;blockquote&gt;
&lt;p&gt;前幾篇我們的 &lt;strong&gt;Worker&lt;/strong&gt; 都是「被動」的——有人送請求上門,&lt;code&gt;fetch&lt;/code&gt; handler 才醒來做事。但真實世界有一大類任務是&lt;strong&gt;主動、定時&lt;/strong&gt;的:每天凌晨清掉過期資料、每小時同步一次匯率、每五分鐘寄一批待發的通知。這種「不靠人觸發、時間到就自己跑」的能力,靠的就是 &lt;strong&gt;Cloudflare Workers&lt;/strong&gt; 的 &lt;strong&gt;Cron Triggers&lt;/strong&gt;。這一篇我們深入排程:在 &lt;code&gt;wrangler.jsonc&lt;/code&gt; 的 &lt;strong&gt;&lt;code&gt;triggers.crons&lt;/code&gt;&lt;/strong&gt; 設定 &lt;strong&gt;cron 表達式&lt;/strong&gt;、匯出 &lt;strong&gt;&lt;code&gt;scheduled(event, env, ctx)&lt;/code&gt;&lt;/strong&gt; handler、用 &lt;code&gt;event.cron&lt;/code&gt; 與 &lt;code&gt;scheduledTime&lt;/code&gt; 做多排程分流、以 &lt;strong&gt;&lt;code&gt;wrangler dev --test-scheduled&lt;/code&gt;&lt;/strong&gt; 在本地觸發測試,並講清楚 cron 為何一律吃 &lt;strong&gt;UTC&lt;/strong&gt;、為何一定要用 &lt;strong&gt;&lt;code&gt;ctx.waitUntil&lt;/code&gt;&lt;/strong&gt;、以及長任務何時該交棒給 &lt;strong&gt;Queues&lt;/strong&gt; 或 &lt;strong&gt;Workflows&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Workers WebSockets：WebSocketPair 與 101 升級實戰 | Cloudflare 完整教學</title><link>https://benzhub.github.io/post/cloudflare/008-websockets/</link><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/cloudflare/008-websockets/</guid><description>&lt;blockquote&gt;
&lt;p&gt;上一篇《Streams 串流處理》讓資料「一直往下推」，但那是&lt;strong&gt;單向&lt;/strong&gt;的——伺服器推、客戶端只讀。當你需要&lt;strong&gt;雙方隨時互相說話&lt;/strong&gt;，做真正的即時互動（聊天室、多人協作、線上遊戲、即時通知），就得換上 &lt;strong&gt;WebSocket&lt;/strong&gt; 這把武器。這一篇我們深入 &lt;strong&gt;Cloudflare Workers&lt;/strong&gt; 的 WebSocket：從 &lt;code&gt;Upgrade: websocket&lt;/code&gt; 標頭與 &lt;strong&gt;101 升級握手&lt;/strong&gt;、&lt;code&gt;new WebSocketPair()&lt;/code&gt; 建立 client/server 一對連線、&lt;code&gt;server.accept()&lt;/code&gt; 接受連線、到 &lt;code&gt;message&lt;/code&gt; / &lt;code&gt;close&lt;/code&gt; 事件的處理，親手寫一個雙向 echo 伺服器。也會講清楚為什麼&lt;strong&gt;無狀態的 Worker&lt;/strong&gt; 撐不住多人廣播，該把棒子交給 &lt;strong&gt;Durable Objects&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Workers Streams 串流處理：邊收邊送與 SSE 實戰 | Cloudflare 完整教學</title><link>https://benzhub.github.io/post/cloudflare/007-streams/</link><pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/cloudflare/007-streams/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在 &lt;strong&gt;Cloudflare Workers&lt;/strong&gt; 中，當你要處理「很大」或「即時」的資料——代理一個上百 MB 的檔案、把 AI 模型逐字吐出的 token 即時推給前端——你不可能把整份資料塞進只有 128 MB 的記憶體。答案是 &lt;strong&gt;Streams（串流）&lt;/strong&gt;：讓資料像水一樣一段段流過，&lt;strong&gt;邊接收邊回傳&lt;/strong&gt;，記憶體裡任何時刻只留很小的一塊。這一篇我們深入 &lt;code&gt;ReadableStream&lt;/code&gt; / &lt;code&gt;WritableStream&lt;/code&gt; / &lt;code&gt;TransformStream&lt;/code&gt; 三大元件、&lt;code&gt;pipeThrough&lt;/code&gt; 與 &lt;code&gt;pipeTo&lt;/code&gt; 的接管、&lt;strong&gt;背壓（backpressure）&lt;/strong&gt; 的自動流量控制，以及怎麼用 &lt;strong&gt;SSE&lt;/strong&gt; 做 &lt;strong&gt;LLM 串流輸出&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Workers Cache API：邊緣快取完整實作 | Cloudflare 完整教學</title><link>https://benzhub.github.io/post/cloudflare/006-cache-api/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/cloudflare/006-cache-api/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在 &lt;strong&gt;Cloudflare Workers&lt;/strong&gt; 中，最迷人的效能武器之一就是 &lt;strong&gt;Cache API&lt;/strong&gt;——它讓你把運算結果直接快取在離使用者最近的&lt;strong&gt;邊緣節點&lt;/strong&gt;上，下一次同樣的請求進來，連運算和回源都省了，直接從邊緣秒回。這一篇我們深入 &lt;code&gt;caches.default&lt;/code&gt; 的三個核心方法、快取鍵怎麼設計、TTL 怎麼用 &lt;strong&gt;Cache-Control&lt;/strong&gt; 控制，以及為什麼 &lt;code&gt;ctx.waitUntil&lt;/code&gt; 是「非同步寫快取」的最佳拍檔。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Workers Request 與 Response：處理 HTTP 請求與回應 | Cloudflare 完整教學</title><link>https://benzhub.github.io/post/cloudflare/005-request-response/</link><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/cloudflare/005-request-response/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在 &lt;strong&gt;Cloudflare Workers&lt;/strong&gt; 的世界裡，每一次請求最終都歸結為兩個物件:進來的 &lt;strong&gt;Request&lt;/strong&gt; 與回去的 &lt;strong&gt;Response&lt;/strong&gt;。這一篇我們深入 &lt;strong&gt;fetch handler&lt;/strong&gt; 最核心的這兩個角色——請求進來長什麼樣、回應怎麼構造、Headers 與 Body 如何操作、如何依 path 與 method 路由，以及 &lt;code&gt;request.cf&lt;/code&gt; 與 &lt;code&gt;ctx.waitUntil&lt;/code&gt; 這兩個 Workers 專屬的實用工具。全部基於 Web 標準 API。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Workers 定價與限制：CPU time 計費與省錢技巧 | Cloudflare 完整教學</title><link>https://benzhub.github.io/post/cloudflare/004-pricing-limits/</link><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/cloudflare/004-pricing-limits/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cloudflare Workers&lt;/strong&gt; 的執行模型看懂了，接下來就要把它換算成兩件實際的事:&lt;strong&gt;要付多少錢、能做到哪裡為止。&lt;/strong&gt; 這一篇我們把 Free 與 Paid 方案的請求數、CPU 時間、記憶體、bundle 大小、子請求數每一條線畫清楚，解釋 &lt;strong&gt;CPU time&lt;/strong&gt; 計費為何只算運算、不算等待，並教你怎麼估成本、怎麼避開超限。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>V8 Isolates 執行模型：Workers 為何近乎零冷啟動 | Cloudflare 完整教學</title><link>https://benzhub.github.io/post/cloudflare/003-v8-isolates/</link><pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/cloudflare/003-v8-isolates/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cloudflare Workers&lt;/strong&gt; 之所以能做到近乎零的冷啟動、驚人的部署密度，以及那些看似奇怪的行為限制，答案全都藏在一個核心設計裡——&lt;strong&gt;V8 Isolates&lt;/strong&gt;。這一篇我們掀開引擎蓋，看懂 Isolate 到底是什麼、它憑什麼比容器快上百倍、多租戶如何安全共享同一個進程，以及為什麼你不能把模組層變數當狀態用。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>第一個 Worker：從建立到部署上線 | Cloudflare 完整教學</title><link>https://benzhub.github.io/post/cloudflare/002-first-worker/</link><pubDate>Sun, 02 Aug 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/cloudflare/002-first-worker/</guid><description>&lt;blockquote&gt;
&lt;p&gt;上一篇我們鳥瞰了整片地圖，這一篇正式動手。我們會用 &lt;code&gt;npm create cloudflare&lt;/code&gt; 建立專案，看懂 &lt;strong&gt;export default&lt;/strong&gt; 裡的 &lt;strong&gt;fetch&lt;/strong&gt; handler，用 &lt;strong&gt;wrangler&lt;/strong&gt; dev 在本地跑起來，最後把你的第一個 &lt;strong&gt;Cloudflare Worker&lt;/strong&gt; 部署到全球邊緣網路，並觀察每一個進來的 &lt;strong&gt;request&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Cloudflare 開發者平台總覽：邊緣運算與 Workers 入門 | Cloudflare 完整教學</title><link>https://benzhub.github.io/post/cloudflare/001-platform-overview/</link><pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/cloudflare/001-platform-overview/</guid><description>&lt;blockquote&gt;
&lt;p&gt;這是 &lt;strong&gt;Cloudflare 完整教學&lt;/strong&gt;系列的第一篇。在正式動手寫 &lt;strong&gt;Worker&lt;/strong&gt; 之前，我們先鳥瞰整片地圖：什麼是&lt;strong&gt;邊緣運算（Edge Computing）&lt;/strong&gt;、為什麼 &lt;strong&gt;Cloudflare Workers&lt;/strong&gt; 值得你投入、&lt;strong&gt;V8 Isolates&lt;/strong&gt; 如何做到近乎零的冷啟動，以及 &lt;strong&gt;Bindings&lt;/strong&gt; 生態如何把 &lt;strong&gt;KV&lt;/strong&gt;、&lt;strong&gt;R2&lt;/strong&gt;、&lt;strong&gt;D1&lt;/strong&gt;、&lt;strong&gt;Durable Objects&lt;/strong&gt;、&lt;strong&gt;Queues&lt;/strong&gt; 與 &lt;strong&gt;AI&lt;/strong&gt; 串成一個完整的開發者平台。&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>