<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Edge-Functions on BenzHub</title><link>https://benzhub.github.io/tags/edge-functions/</link><description>Recent content in Edge-Functions on BenzHub</description><generator>Hugo</generator><language>zh-TW</language><lastBuildDate>Fri, 23 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://benzhub.github.io/tags/edge-functions/index.xml" rel="self" type="application/rss+xml"/><item><title>Edge Functions 串流回應與 Webhooks 實戰 | Supabase 完整教學</title><link>https://benzhub.github.io/post/supabase/034-edge-functions-streaming-webhooks/</link><pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/supabase/034-edge-functions-streaming-webhooks/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;上一篇《Background Tasks 與 Cron》我們讓 &lt;strong&gt;Edge Function&lt;/strong&gt; 學會了在回應後繼續幹活、也能定時自己醒來。這一篇補上運算篇章最後兩塊拼圖：&lt;strong&gt;串流回應&lt;/strong&gt;與 &lt;strong&gt;Webhooks&lt;/strong&gt;。前者讓伺服器「一段一段」把內容推給客戶端——用 &lt;strong&gt;&lt;code&gt;ReadableStream&lt;/code&gt;&lt;/strong&gt; 搭配 &lt;strong&gt;&lt;code&gt;text/event-stream&lt;/code&gt;&lt;/strong&gt;（&lt;strong&gt;Server-Sent Events&lt;/strong&gt;）做出 ChatGPT 那種逐字浮現的體驗，把 LLM 的串流輸出直接轉發給前端；後者讓你的函式能被「事件」驅動——用 &lt;strong&gt;Database Webhooks&lt;/strong&gt;（底層是 &lt;strong&gt;&lt;code&gt;pg_net&lt;/code&gt;&lt;/strong&gt;）在資料一變動就觸發函式，並安全地接住 &lt;strong&gt;Stripe&lt;/strong&gt; 這類第三方 webhook：讀原始 body、用 &lt;strong&gt;HMAC&lt;/strong&gt; 驗簽、以 &lt;strong&gt;constant-time compare&lt;/strong&gt; 比對。這一篇收尾 Edge Functions 段。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Supabase Edge Functions Background Tasks 與 Cron 排程實戰 | Supabase 完整教學</title><link>https://benzhub.github.io/post/supabase/033-edge-functions-background-cron/</link><pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/supabase/033-edge-functions-background-cron/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;上一篇《Secrets、環境與部署》我們把第一個 &lt;strong&gt;Edge Function&lt;/strong&gt; 安全地推上了全球邊緣網路。但真實世界的需求往往不只是「收到請求、回一個結果」——很多時候你想在&lt;strong&gt;回應使用者之後、還在背景繼續做事&lt;/strong&gt;（寄通知信、寫日誌、彙整統計），或是&lt;strong&gt;根本不靠使用者觸發、而是定時自動執行&lt;/strong&gt;（每天凌晨產報表、每小時清過期資料）。這一篇就處理這兩類需求：用 &lt;strong&gt;&lt;code&gt;EdgeRuntime.waitUntil&lt;/code&gt;&lt;/strong&gt; 做「回應後的背景任務」（Background Tasks）、監聽 &lt;strong&gt;&lt;code&gt;beforeunload&lt;/code&gt;&lt;/strong&gt; 事件做收尾，並用 &lt;strong&gt;&lt;code&gt;pg_cron&lt;/code&gt;&lt;/strong&gt; 搭配 &lt;strong&gt;&lt;code&gt;pg_net&lt;/code&gt;&lt;/strong&gt;（即 &lt;strong&gt;Supabase Cron&lt;/strong&gt;）讓&lt;strong&gt;資料庫定時呼叫&lt;/strong&gt;你的 Edge Function，再談背景與排程都繞不開的&lt;strong&gt;冪等設計&lt;/strong&gt;與&lt;strong&gt;執行時間限制&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Supabase Edge Functions Secrets、環境與部署實戰 | Supabase 完整教學</title><link>https://benzhub.github.io/post/supabase/032-edge-functions-secrets-deploy/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/supabase/032-edge-functions-secrets-deploy/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;上一篇《Edge Functions 入門》我們寫出並在本機跑通了第一個以 &lt;strong&gt;Deno&lt;/strong&gt; 為底層的無伺服器函式，但它還沒真正上線，金鑰也還躺在本機的 &lt;code&gt;.env&lt;/code&gt; 裡。這一篇處理兩件把函式「推上正式環境」必修的事：&lt;strong&gt;Secrets 與環境變數&lt;/strong&gt;——用 &lt;code&gt;supabase secrets set&lt;/code&gt; 安全管理正式環境金鑰、用 &lt;code&gt;Deno.env.get()&lt;/code&gt; 在函式裡讀取，並認識平台&lt;strong&gt;內建自動注入&lt;/strong&gt;的 &lt;code&gt;SUPABASE_URL&lt;/code&gt;、&lt;code&gt;SUPABASE_SERVICE_ROLE_KEY&lt;/code&gt;；以及&lt;strong&gt;部署&lt;/strong&gt;——用 &lt;code&gt;supabase functions deploy&lt;/code&gt; 把函式送上&lt;strong&gt;全球邊緣網路&lt;/strong&gt;、&lt;code&gt;--no-verify-jwt&lt;/code&gt; 做公開端點、&lt;code&gt;import map&lt;/code&gt;／&lt;code&gt;deno.json&lt;/code&gt; 鎖定套件版本。學完這篇，你的第一個 Edge Function 就能安全地對外服務。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Supabase Edge Functions 入門：第一個 Deno 無伺服器函式 | Supabase 完整教學</title><link>https://benzhub.github.io/post/supabase/031-edge-functions-intro/</link><pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/supabase/031-edge-functions-intro/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;前一篇我們替 &lt;strong&gt;Realtime&lt;/strong&gt; 補上授權、做出安全的即時聊天室，替「資料與即時」畫下句點。這一篇正式踏入 &lt;strong&gt;運算與 AI&lt;/strong&gt;：當你需要在&lt;strong&gt;伺服器端&lt;/strong&gt;跑自訂邏輯——呼叫第三方 API、把私密金鑰藏起來、處理 Webhook——就輪到 &lt;strong&gt;Edge Functions&lt;/strong&gt; 登場。本篇帶你認識以 &lt;strong&gt;Deno&lt;/strong&gt; 為底層的&lt;strong&gt;無伺服器（serverless）&lt;/strong&gt; TypeScript 函式，從 &lt;code&gt;supabase functions new&lt;/code&gt; 建立、用 &lt;code&gt;Deno.serve&lt;/code&gt; 寫 handler、本機 &lt;code&gt;supabase functions serve&lt;/code&gt; 測試，到用 &lt;code&gt;supabase.functions.invoke&lt;/code&gt; 從前端呼叫，寫出你的第一個部署到&lt;strong&gt;全球邊緣網路&lt;/strong&gt;的函式，並釐清它與 &lt;strong&gt;Database Functions&lt;/strong&gt; 的分工。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item></channel></rss>