為什么 Cloudflare 是 2024 年 Vercel 的最佳替代品?生態(tài)系統(tǒng)與價(jià)格比較
本文探討了 Vercel 的功能,并與 Cloudflare 生態(tài)系統(tǒng)中的類似產(chǎn)品進(jìn)行了比較。從托管到存儲(chǔ),我們將看到為什么 Cloudflare 可以在 2024 年成為 Vercel 的最佳替代品。
- 介紹
- 什么是 Cloudflare?
- Cloudflare vs Vercel:托管和部署
- Cloudflare vs Vercel:無服務(wù)器函數(shù)
- Cloudflare vs Vercel:KV 存儲(chǔ)
- Cloudflare vs Vercel:無服務(wù)器數(shù)據(jù)庫
- Cloudflare vs Vercel:圖像優(yōu)化
- 結(jié)論
介紹
最近,我們看到了很多關(guān)于所謂的無服務(wù)器恐怖故事的大驚小怪,或者無服務(wù)器計(jì)算的無限規(guī)??赡軐?dǎo)致月底的巨額賬單。事實(shí)上,Vercel 對(duì)開發(fā)人員來說是一個(gè)很好的平臺(tái),但與其他替代方案相比,價(jià)格可能會(huì)比較昂貴。
如果您犯了錯(cuò)誤,或者沒有很好地了解該平臺(tái)的工作原理以及如何優(yōu)化您的網(wǎng)站或應(yīng)用程序,Vercel 確實(shí)會(huì)讓您付出高昂的代價(jià)。例如,伊利亞斯-伊斯姆(Ilias Ism)分享了他如何在 Vercel 上每月被收取 2000 多美元的基本服務(wù)費(fèi)。
但這并不是唯一或最可怕的故事。
互聯(lián)網(wǎng)上還有許多其他帖子描述開發(fā)人員為一個(gè)簡(jiǎn)單的網(wǎng)站或應(yīng)用程序收取數(shù)千美元的費(fèi)用。邁克爾·奧伯里 (Michael Aubury) 就是這種情況,當(dāng)有人針對(duì)他的 Vercel 部署進(jìn)行 DDoS 攻擊時(shí),他收到了 23,000 美元的賬單,而邁克·拉米雷斯 (Mike Ramirez) 在 6 小時(shí)內(nèi)收到了 3,000 美元的賬單,因?yàn)樗拇a中的一個(gè)小錯(cuò)誤。
如果您正在尋找 Vercel 更具成本效益的替代品,Cloudflare 是一個(gè)不錯(cuò)的選擇。Cloudflare 提供廣泛的服務(wù),可以幫助您優(yōu)化網(wǎng)站或應(yīng)用程序,并且可以成為 Vercel 的絕佳替代品。
當(dāng)然,您不需要將整個(gè)應(yīng)用程序遷移到 Cloudflare,完全離開 Vercel。例如,Ilias 就采取了一種混合方法,包括將圖像優(yōu)化轉(zhuǎn)移到 Cloudflare,做出更好的開發(fā)選擇(如禁用 <Link>
標(biāo)記中的預(yù)?。?,以及在 Vercel 生態(tài)系統(tǒng)本身中進(jìn)行移動(dòng)(如盡可能使用 edge runtime)。
在本文中,我們將探討 Vercel 的功能和定價(jià),以及 Cloudflare 如何在 2024 年成為 Vercel 的最佳替代品。
什么是 Cloudflare?
很難用幾句話來解釋 Cloudflare 是什么。它以其 CDN 和安全服務(wù)而聞名,但這還不是全部。它是一個(gè)無服務(wù)器托管平臺(tái),可以幫助您以經(jīng)濟(jì)高效的方式部署您的網(wǎng)站或應(yīng)用程序,一個(gè)可以幫助您管理域的 DNS 注冊(cè)商,一個(gè)可以幫助您管理 DNS 記錄的 DNS 提供商。遠(yuǎn)不止于此。
老實(shí)說,說到網(wǎng)絡(luò)基礎(chǔ)設(shè)施,Cloudflare 是你所能想到的最好、更快、更安全的互聯(lián)網(wǎng)。Cloudflare Edge 網(wǎng)絡(luò)是其所有服務(wù)的核心,它是一個(gè)全球服務(wù)器網(wǎng)絡(luò),在終端用戶附近運(yùn)行代碼、提供計(jì)算和存儲(chǔ)數(shù)據(jù),從而減少延遲并提高性能。
當(dāng)然,Vercel 也擁有全球服務(wù)器網(wǎng)絡(luò),但 Cloudflare 網(wǎng)絡(luò)要大得多。Vercel 的網(wǎng)絡(luò)有 18 個(gè)區(qū)域和 100 多個(gè)接入點(diǎn),而 Cloudflare 在全球擁有 300 多個(gè)數(shù)據(jù)中心。
部署數(shù)據(jù)中心的可用性也是 Cloudflare 的一大優(yōu)勢(shì)。在 Vercel 和 AWS 等其他提供商一樣,您必須選擇一個(gè)地區(qū)來部署您的應(yīng)用程序。而在 Cloudflare,區(qū)域就是全世界。您無需擔(dān)心應(yīng)用程序部署在哪里或數(shù)據(jù)存儲(chǔ)在哪里。
您的網(wǎng)站始終位于網(wǎng)絡(luò)邊緣,靠近所有最終用戶。
Cloudflare vs Vercel:托管和部署
圖片
讓我們從 Vercel 開始。
Vercel 之所以如此受歡迎,是因?yàn)樗雇泄芫W(wǎng)站或 Web 應(yīng)用程序變得如此簡(jiǎn)單。從字面上看,您可以將 Github 存儲(chǔ)庫連接到 Vercel 并部署您的網(wǎng)站,只需單擊幾下即可,而不必?fù)?dān)心服務(wù)器、基礎(chǔ)設(shè)施或其他任何事情。
你要做的是將你的代碼推送到 Github,創(chuàng)建并將其導(dǎo)出到一個(gè)項(xiàng)目和 vercel 中,并在每次推送到存儲(chǔ)庫時(shí)開始部署。Vercel 將構(gòu)建您的網(wǎng)站并將其部署到云端,使其可供全世界使用。
它與 Next.js 有很好的集成,因?yàn)樗怯?Vercel 團(tuán)隊(duì)創(chuàng)建的,但它也支持各種最流行的前端框架,無論您使用什么工具,都可以優(yōu)化您的網(wǎng)站構(gòu)建方式。
在 Vercel 上托管您的網(wǎng)站時(shí),它主要按帶寬或從您的網(wǎng)站向用戶傳輸?shù)臄?shù)據(jù)量收費(fèi)。傳輸?shù)臄?shù)據(jù)包括傳出數(shù)據(jù)(即從您的網(wǎng)站向用戶發(fā)送的數(shù)據(jù))和傳入數(shù)據(jù)(即從您的用戶向您的網(wǎng)站發(fā)送的數(shù)據(jù))。
最初,免費(fèi)計(jì)劃包括每月 100 GB 的帶寬,專業(yè)計(jì)劃包括每月 1 TB 的帶寬。如果超出帶寬限制,每增加 100 GB 帶寬將收取 40 美元。但在新的定價(jià)模式下,不再有一刀切的做法,Vercel 將托管應(yīng)用程序和網(wǎng)站的帶寬定價(jià)分為三個(gè)變量:快速數(shù)據(jù)傳輸(Fast Data Transfer)、邊緣請(qǐng)求(Edge Request) 和 數(shù)據(jù)緩存(Data Cache) 。
快速數(shù)據(jù)傳輸是在 Vercel Edge Newtwork 和最終用戶之間傳輸?shù)臄?shù)據(jù)。免費(fèi)計(jì)劃包括 100 GB 的快速數(shù)據(jù)傳輸,Pro 計(jì)劃包括 1TB 的快速數(shù)據(jù)傳輸,額外費(fèi)用為每 GB 0.15 美元起?,F(xiàn)在,價(jià)格將因傳輸數(shù)據(jù)的地區(qū)而異:
- 每 GB 0.15 美元:美國(guó)克利夫蘭 (cle1)、美國(guó)華盛頓特區(qū) (iad1)、美國(guó)波特蘭 (pdx1)、瑞典斯德哥爾摩 (arn1)、英國(guó)倫敦 (lhr1)、德國(guó)法蘭克福 (fra1)、都柏林 (dub1)、法國(guó)巴黎 (cdg1)、美國(guó)舊金山 (sfo1)
- 每 GB 0.30 美元:新加坡 (sin1)、中國(guó)香港 (hkg1)
- 每 GB 0.31 美元:日本大阪 (kix1)、日本東京 (hnd1)
- 每 GB 0.32 美元:澳大利亞悉尼 (syd1)
- 每 GB 0.33 美元:印度孟買 (BOM1)
- 每 GB 0.39 美元:南非開普敦 (cpt1)
- 每 GB 0.44 美元:巴西圣保羅 (gru1)
- 每 GB 0.47 美元:韓國(guó)首爾 (icn1)
邊緣請(qǐng)求(Edge Request)是指在向最終用戶提供您的網(wǎng)站或應(yīng)用程序時(shí)向 Vercel 邊緣網(wǎng)絡(luò)發(fā)出的請(qǐng)求數(shù)量。當(dāng)用戶訪問您的網(wǎng)站時(shí),他們的請(qǐng)求會(huì)路由到最近的 Vercel 邊緣網(wǎng)絡(luò),從而減少延遲并提高性能。例如,加載單個(gè)網(wǎng)頁可能涉及對(duì) HTML 文檔、CSS 文件、JavaScript 文件、圖像等的請(qǐng)求。這些請(qǐng)求中的每一個(gè)都計(jì)為一個(gè)邊緣請(qǐng)求,并根據(jù) Vercel 的定價(jià)模型產(chǎn)生費(fèi)用。
免費(fèi)計(jì)劃包括每月 100 萬次邊緣請(qǐng)求,專業(yè)計(jì)劃包括每月 1000 萬次邊緣請(qǐng)求,每 100 萬次邊緣請(qǐng)求額外收費(fèi) 2 美元。價(jià)格也因請(qǐng)求所在地區(qū)而異:
- 每 1M 請(qǐng)求 2 美元:美國(guó)克利夫蘭 (cle1)、美國(guó)華盛頓特區(qū) (iad1)、美國(guó)波特蘭 (pdx1)
- 每 1M 請(qǐng)求 2.20 美元:瑞典斯德哥爾摩 (arn1)、印度孟買 (bom1)
- 每 1M 請(qǐng)求 2.40 美元:英國(guó)倫敦 (lhr1)、都柏林 (dub1)、法國(guó)巴黎 (cdg1)、美國(guó)舊金山 (sfo1)
- 每 1M 請(qǐng)求 2.60 美元:新加坡 (sin1)、澳大利亞悉尼 (syd1)、日本大阪 (kix1)、韓國(guó)首爾 (icn1)、日本東京 (hnd1)、德國(guó)法蘭克福 (fra1)
- 每 1M 請(qǐng)求 2.80 美元:中國(guó)香港 (hkg1)、開普敦、南非 (cpt1)
- 每 1M 請(qǐng)求 3.20 美元:巴西圣保羅 (gru1)
數(shù)據(jù)緩存是指已寫入 Vercel 邊緣網(wǎng)絡(luò)以進(jìn)行快速訪問并隨后從緩存存儲(chǔ)中檢索(讀?。┑乃袛?shù)據(jù)的總和。定價(jià)因?qū)彺娲鎯?chǔ)執(zhí)行的操作(寫入或讀?。┮约熬彺鏀?shù)據(jù)的區(qū)域而異。免費(fèi)計(jì)劃包括 2M 字節(jié)的緩存寫入和 10M 字節(jié)的緩存讀取,而 Pro 計(jì)劃每增加 1M 字節(jié)的緩存寫入收取 4 美元,每增加 1M 字節(jié)的緩存讀取收取 0.40 美元。定價(jià)也會(huì)因緩存數(shù)據(jù)的區(qū)域而異:
- 數(shù)據(jù)緩存讀?。?/li>
每 1M 字節(jié) 4 美元:美國(guó)克利夫蘭 (cle1)、美國(guó)華盛頓特區(qū) (iad1)、美國(guó)波特蘭 (pdx1)
每 1M 字節(jié) 4.40 USD:瑞典斯德哥爾摩 (arn1)、印度孟買 (bom1)
每 1M 字節(jié) 4.80 美元:英國(guó)倫敦 (lhr1)、都柏林 (dub1)、法國(guó)巴黎 (cdg1)、美國(guó)舊金山 (sfo1)
每 1M 字節(jié) 5.20 美元:新加坡 (sin1)、澳大利亞悉尼 (syd1)、日本大阪 (kix1)、韓國(guó)首爾 (icn1)、日本東京 (hnd1)、德國(guó)法蘭克福 (fra1)
每 1M 字節(jié) 5.60 美元:中國(guó)香港 (hkg1)、南非開普敦 (cpt1)
每 1M 字節(jié) 6.40 美元:巴西圣保羅 (gru1)
- 數(shù)據(jù)緩存寫入:
每 1M 字節(jié) 0.40 美元:美國(guó)克利夫蘭 (cle1)、美國(guó)華盛頓特區(qū) (iad1)、美國(guó)波特蘭 (pdx1)
每 1M 字節(jié) 0.44 美元:瑞典斯德哥爾摩 (arn1)、印度孟買 (bom1)
每 1M 字節(jié) 0.48 美元:英國(guó)倫敦 (lhr1)、都柏林 (dub1)、法國(guó)巴黎 (cdg1)、美國(guó)舊金山 (sfo1)
每 1M 字節(jié) 0.52 美元:新加坡 (sin1)、澳大利亞悉尼 (syd1)、日本大阪 (kix1)、韓國(guó)首爾 (icn1)、日本東京 (hnd1)、德國(guó)法蘭克福 (fra1)
每 1M 字節(jié) 0.56 美元:中國(guó)香港 (hkg1)、南非開普敦 (cpt1)
每 1M 字節(jié) 0.64 美元:巴西圣保羅 (gru1)
您需要注意的其他變量包括構(gòu)建執(zhí)行時(shí)間,或在部署期間構(gòu)建網(wǎng)站或應(yīng)用程序所需的時(shí)間,以及并發(fā)構(gòu)建,或可以同時(shí)運(yùn)行的構(gòu)建數(shù)。
免費(fèi)計(jì)劃包括 1 個(gè)并發(fā)版本,Pro 計(jì)劃還包括 1 個(gè),每增加一個(gè)并發(fā)版本收費(fèi) 50 美元。關(guān)于構(gòu)建執(zhí)行時(shí)間,免費(fèi)計(jì)劃包括 6,000 分鐘的構(gòu)建時(shí)間,Pro 計(jì)劃包括 24,000 分鐘的構(gòu)建時(shí)間。
在 Vercel 中,Pro 計(jì)劃的起價(jià)為每月 20 美元。
Cloudflare 呢?
Cloudflare 提供與 Vercel 類似的服務(wù),稱為 Cloudflare Pages。
Cloudflare Pages 最初是一種 JAMstack 托管服務(wù),通過利用 Cloudflare 邊緣網(wǎng)絡(luò)快速安全地交付網(wǎng)站而聲名鵲起,但現(xiàn)在它已經(jīng)發(fā)展成為一個(gè)完整的無服務(wù)器托管平臺(tái),可以運(yùn)行任何類型的應(yīng)用程序,從靜態(tài)網(wǎng)站到需要服務(wù)器端邏輯的全棧 Web 應(yīng)用程序。
與 Vercel 一樣,您還可以連接您的 Github 存儲(chǔ)庫并部署您的網(wǎng)站,只需單擊幾下即可。無論您使用的是Next.js還是任何其他框架,Cloudflare Pages 都會(huì)構(gòu)建您的網(wǎng)站并將其部署到云端,使其可供全世界使用。
您可以看到的 Vercel 和 Cloudflare Pages 之間的最大區(qū)別是定價(jià)。Cloudflare Pages 比 Vercel 更具成本效益,主要是因?yàn)樗皇杖捹M(fèi)用。
沒錯(cuò),在 Cloudflare Pages 上托管您的網(wǎng)站時(shí),您無需按帶寬計(jì)費(fèi),因此您無需擔(dān)心有多少用戶正在訪問您的網(wǎng)站或傳輸了多少數(shù)據(jù)。
與 Vercel 一樣,Cloudflare Pages 也限制并發(fā)構(gòu)建和帳戶每月可以運(yùn)行的構(gòu)建總數(shù)。免費(fèi)計(jì)劃包括每月 1 次并發(fā)構(gòu)建和 500 次構(gòu)建,Pro 計(jì)劃包括每月 5 次并發(fā)構(gòu)建和 5,000 次構(gòu)建。
在 Cloudflare,專業(yè)計(jì)劃的起價(jià)為每月 25 美元。
Cloudflare vs Vercel:無服務(wù)器函數(shù)
圖片
無服務(wù)器函數(shù)(Serverless functions)是向網(wǎng)站添加動(dòng)態(tài)功能的好方法。它們基本上是在云中運(yùn)行的代碼片段,可以由 HTTP 請(qǐng)求、數(shù)據(jù)庫更改或計(jì)劃任務(wù)等事件觸發(fā)。
Vercel 提供一項(xiàng)名為 Vercel Functions 的服務(wù),允許您在靠近用戶的 Vercel 邊緣網(wǎng)絡(luò)中運(yùn)行無服務(wù)器函數(shù)。這些函數(shù)可按需自動(dòng)擴(kuò)展,并可與 Web 和 Vercel 生態(tài)系統(tǒng)中的 API、數(shù)據(jù)庫和資源進(jìn)行交互。
基礎(chǔ)結(jié)構(gòu)和無服務(wù)器函數(shù)可以執(zhí)行的操作受您為函數(shù)選擇的運(yùn)行時(shí)環(huán)境的限制。可用的運(yùn)行時(shí)包括:Node.js、Go、Ruby、Python 和 Edge 運(yùn)行時(shí)。在 Edge 運(yùn)行時(shí)運(yùn)行的無服務(wù)器函數(shù)更輕量級(jí),計(jì)費(fèi)方式也不同。
Vercel 函數(shù)可能會(huì)受到冷啟動(dòng)的影響,冷啟動(dòng)是指首次調(diào)用非活動(dòng)函數(shù)時(shí)出現(xiàn)的延遲,因?yàn)楹瘮?shù)必須初始化并加載到內(nèi)存中。冷啟動(dòng)可以通過保持函數(shù)預(yù)熱或定期調(diào)用來減少,以防止函數(shù)被掛起。
與 AWS lambda 一樣,Vercel 會(huì)要求您選擇要部署函數(shù)的區(qū)域。這是一個(gè)關(guān)鍵步驟,可能會(huì)對(duì)延遲和性能產(chǎn)生很大影響,因?yàn)楹瘮?shù)離用戶越近,執(zhí)行速度就越快。如果您使用 vercel 存儲(chǔ)服務(wù),例如 KV 或 Postgres,您還應(yīng)該考慮存儲(chǔ)數(shù)據(jù)的區(qū)域,并在該區(qū)域附近部署函數(shù)。
在 2024 年 4 月的定價(jià)更新之前,Vercel 不像 AWS 那樣按地區(qū)收費(fèi),但現(xiàn)在由于數(shù)據(jù)傳輸成本的原因,定價(jià)會(huì)因執(zhí)行函數(shù)的地區(qū)而異。函數(shù)持續(xù)時(shí)間和調(diào)用在各地區(qū)的價(jià)格仍然相同,但數(shù)據(jù)傳輸?shù)氖召M(fèi)將有所不同。
出于計(jì)費(fèi)目的,Edge 函數(shù)按 CPU 時(shí)間或直接執(zhí)行函數(shù)所花費(fèi)的時(shí)間收費(fèi),而其他運(yùn)行時(shí)按掛鐘時(shí)間或函數(shù)運(yùn)行的總時(shí)間收費(fèi),包括空閑時(shí)間或啟動(dòng)環(huán)境并將函數(shù)加載到內(nèi)存中所需的時(shí)間。CPU 時(shí)間以每個(gè) 50 毫秒的執(zhí)行單位來衡量,而掛鐘時(shí)間以 GB-小時(shí)為單位,即為每個(gè)函數(shù)分配的內(nèi)存(以 GB 為單位)乘以它們運(yùn)行的時(shí)間(以小時(shí)為單位)。
在定價(jià)更新之前,免費(fèi)計(jì)劃包括 500,000 個(gè) Edge 函數(shù)執(zhí)行單元和 100 GB 小時(shí)無服務(wù)器函數(shù),而 Pro 計(jì)劃包括 1M 個(gè)邊緣功能執(zhí)行單元,1,000 GB 小時(shí)無服務(wù)器函數(shù),每增加 1M 個(gè)執(zhí)行單元收取 2.00 美元,每增加 100 GB 小時(shí)收取 40 美元。
現(xiàn)在,免費(fèi)計(jì)劃包括 1M 的 Edge 運(yùn)行時(shí)函數(shù)執(zhí)行單元和 1000 GB 小時(shí)的無服務(wù)器函數(shù),而 Pro 計(jì)劃每增加 1M 執(zhí)行單元收取 2 美元,每增加 100 GB 小時(shí)收取 18 美元(每 1GB 小時(shí) 0.18 美元)。
除了持續(xù)時(shí)間變量之外,Vercel 現(xiàn)在還對(duì)兩個(gè)新變量收費(fèi):函數(shù)調(diào)用和數(shù)據(jù)傳輸。這是定價(jià)模式的一大變化,因?yàn)橐郧澳恍枰獮楹瘮?shù)運(yùn)行的時(shí)間付費(fèi)。
函數(shù)調(diào)用是函數(shù)被調(diào)用的次數(shù),包括成功和失敗的調(diào)用。免費(fèi)計(jì)劃包括 1M 函數(shù)調(diào)用,而 Pro 計(jì)劃包括 10M 調(diào)用,每增加 0.60M 調(diào)用收費(fèi) 1 美元。
在無服務(wù)器函數(shù)的上下文中,數(shù)據(jù)傳輸稱為快速源傳輸,是指在 Vercel 邊緣網(wǎng)絡(luò)和您的函數(shù)之間傳輸?shù)臄?shù)據(jù)。免費(fèi)計(jì)劃包括 100 GB 的快速源傳輸,Pro 計(jì)劃包括 1TB 的快速源傳輸,額外費(fèi)用為每 GB 0.06 美元。價(jià)格也會(huì)因數(shù)據(jù)傳輸區(qū)域而異:
- 每 GB 0.06 美元:美國(guó)克利夫蘭 (cle1)、美國(guó)華盛頓特區(qū) (iad1)、美國(guó)波特蘭 (pdx1)、瑞典斯德哥爾摩 (arn1)、英國(guó)倫敦 (lhr1)、德國(guó)法蘭克福 (fra1)、都柏林 (dub1)、法國(guó)巴黎 (cdg1)、美國(guó)舊金山 (sfo1)
- 每 GB 0.27 美元:新加坡 (sin1)、日本大阪 (kix1)、日本東京 (hnd1)、中國(guó)香港 (hkg1)
- 每 GB 0.24 美元:韓國(guó)首爾 (icn1)
- 每 GB 0.25 美元:印度孟買 (bom1)
- 每 GB 0.29 美元:澳大利亞悉尼 (syd1)
- 每 GB 0.43 美元:南非開普敦 (cpt1)
- 每 GB 0.41 美元:巴西圣保羅 (gru1)
Cloudflare 還提供一種名為 Cloudflare Workers[1] 的服務(wù),允許您在 Cloudflare 邊緣網(wǎng)絡(luò)中運(yùn)行無服務(wù)器函數(shù),以接近您的用戶。該函數(shù)還能按需自動(dòng)擴(kuò)展,并能與 API、數(shù)據(jù)庫以及網(wǎng)絡(luò)和 Cloudflare 生態(tài)系統(tǒng)中的資源進(jìn)行交互。
目前,Cloudflare 無服務(wù)器函數(shù)必須用 TypeScript/JavaScript 或任何可以編譯為 WebAssembly 的語言編寫。
Cloudflare Workers 不會(huì)受到冷啟動(dòng)的影響,因?yàn)樗\(yùn)行在 V8 isolates[2] 之上,可以在 5 毫秒內(nèi)預(yù)熱函數(shù)。這意味著您的函數(shù)隨時(shí)可以執(zhí)行,無論它們處于非活動(dòng)狀態(tài)多長(zhǎng)時(shí)間。與 Vercel 功能相比,這是一個(gè)巨大的優(yōu)勢(shì),因?yàn)槔鋯?dòng)對(duì)于某些應(yīng)用來說可能是一個(gè)大問題。
通過使用 Workers,您也無需擔(dān)心要部署應(yīng)用程序的區(qū)域。默認(rèn)情況下,在 Cloudflare 上,區(qū)域就是世界,這意味著您的代碼將始終在靠近您的資源和用戶的地方運(yùn)行。
由于 Cloudflare 杜絕了冷啟動(dòng),因此 Workers 不對(duì)掛壁時(shí)間收費(fèi),默認(rèn)情況下僅使用 CPU 時(shí)間計(jì)費(fèi)。免費(fèi)計(jì)劃包括每天 100,000 次請(qǐng)求和每次調(diào)用平均 10ms 的 CPU 時(shí)間,而標(biāo)準(zhǔn)計(jì)劃起價(jià)為 5 美元,包括每月 10,000,000 次請(qǐng)求和 30,000,000 CPUms。額外請(qǐng)求按每 1M 請(qǐng)求 0.30 美元計(jì)費(fèi),額外 CPUms 按每 1M CPUms 0.02 美元計(jì)費(fèi)。
Cloudflare vs Vercel:KV 存儲(chǔ)
圖片
Vercel KV 是一個(gè)持久的 Redis 數(shù)據(jù)庫,可用于存儲(chǔ)和檢索 JSON 數(shù)據(jù)。它不是 Vercel 的原生服務(wù),而是由與 Upstash 合作提供支持的。
默認(rèn)情況下,在創(chuàng)建 KV 數(shù)據(jù)庫時(shí)指定的主區(qū)域中配置了一個(gè) Redis 數(shù)據(jù)庫。寫操作將在這個(gè)主區(qū)域內(nèi)進(jìn)行。KV 數(shù)據(jù)庫可能有額外的讀取區(qū)域,讀取操作將在離觸發(fā)請(qǐng)求最近的區(qū)域運(yùn)行。
請(qǐng)注意,當(dāng)您這樣做時(shí),您正在復(fù)制數(shù)據(jù)庫,這將成倍地增加服務(wù)的使用量和成本,因?yàn)槊總€(gè)寫入命令將向您的主數(shù)據(jù)庫發(fā)出一次,向您配置的每個(gè)只讀副本發(fā)出一次。
并非所有 Vercel 區(qū)域都受 KV 存儲(chǔ)支持。實(shí)際上,僅支持以下區(qū)域:都柏林、法蘭克福、圣保羅、華盛頓、波特蘭、舊金山、新加坡和悉尼。
也不支持更改 Vercel KV 存儲(chǔ)的主要區(qū)域。如果要更改數(shù)據(jù)庫的區(qū)域,則必須創(chuàng)建一個(gè)新存儲(chǔ)并遷移所有數(shù)據(jù)。
KV 存儲(chǔ)月度費(fèi)用取決于四個(gè)主要變量,即:
- 數(shù)據(jù)庫:免費(fèi)計(jì)劃包括 1 個(gè)數(shù)據(jù)庫,不允許任何副本,而 Pro 計(jì)劃最多包括 5 個(gè)數(shù)據(jù)庫,包括副本。每個(gè)額外的數(shù)據(jù)庫或副本的成本為 1,00 美元。
- 存儲(chǔ):表示每月使用的最大存儲(chǔ)量。免費(fèi)計(jì)劃包括 512MB 內(nèi)存,而 Pro 計(jì)劃包括 1GB,額外存儲(chǔ)空間按每 GB 0.25 美元收費(fèi)。
- 請(qǐng)求數(shù):請(qǐng)求數(shù)是指一個(gè)賬號(hào)對(duì)所有KV數(shù)據(jù)庫發(fā)出的Redis命令數(shù),包括對(duì)副本的寫入操作。免費(fèi)計(jì)劃包括每月 150,000 個(gè)請(qǐng)求,而 Pro 計(jì)劃包括 150,000 個(gè)請(qǐng)求,每 100,000 個(gè)額外請(qǐng)求收取 0.35 的費(fèi)用。
- 數(shù)據(jù)傳輸:數(shù)據(jù)傳輸是指在查詢您賬戶上的KV數(shù)據(jù)庫的各功能之間傳輸?shù)臄?shù)據(jù)總量。免費(fèi)計(jì)劃包括 256MB 的數(shù)據(jù)傳輸,而 Pro 計(jì)劃包括 1GB,額外的數(shù)據(jù)傳輸按每 GB 0.10 美元收費(fèi)。
Vercel KV 的替代品是 Cloudflare KV。Cloudflare KV[3] 是一個(gè)無服務(wù)器鍵值數(shù)據(jù)庫,使您能夠在 Cloudflare 邊緣網(wǎng)絡(luò)上存儲(chǔ)和檢索數(shù)據(jù)。與 Vercel 不同的是,它是 Cloudflare 的原生服務(wù),并非由與其他公司的合作伙伴關(guān)系提供支持。它也不是 Redis 數(shù)據(jù)庫,而是針對(duì) Cloudflare 上的邊緣計(jì)算進(jìn)行了優(yōu)化的鍵值數(shù)據(jù)庫。
訪問 Cloudflare KV 中數(shù)據(jù)的最常見方式是通過 Workers,但您也可以通過 Cloudflare API 進(jìn)行訪問。
Cloudflare KV 是一個(gè)全球數(shù)據(jù)庫,這意味著您的數(shù)據(jù)會(huì)復(fù)制到 Cloudflare 在全球的所有數(shù)據(jù)中心。您的數(shù)據(jù)不局限于單一地區(qū),您無需擔(dān)心在不同地區(qū)創(chuàng)建副本以獲得更好的性能。
Cloudflare KV 的定價(jià)和限制因您選擇的計(jì)劃和您正在執(zhí)行的操作的性質(zhì)而異。您無需按數(shù)據(jù)傳輸或創(chuàng)建的數(shù)據(jù)庫數(shù)量付費(fèi),而是按您發(fā)出的請(qǐng)求數(shù)和存儲(chǔ)的數(shù)據(jù)量付費(fèi)。
對(duì)于存儲(chǔ),在免費(fèi)計(jì)劃中,您最多可以存儲(chǔ) 1GB 的數(shù)據(jù),而在付費(fèi)計(jì)劃中,每增加 GB 數(shù)據(jù)需要支付 0.5 美元。
對(duì)于請(qǐng)求,在免費(fèi)計(jì)劃中,您每天最多可以發(fā)出 100,000 個(gè)讀取請(qǐng)求,每天最多可以發(fā)出 1,000 個(gè)寫入、刪除和列出請(qǐng)求。在付費(fèi)計(jì)劃中,每增加 10M 讀取請(qǐng)求需要支付 0.5 美元,每增加 1M 寫入、刪除和列出請(qǐng)求需要支付 5 美元。
Cloudflare vs Vercel:無服務(wù)器數(shù)據(jù)庫
圖片
Vercel 無服務(wù)器數(shù)據(jù)庫是一個(gè) PostgreSQL 數(shù)據(jù)庫,旨在與 Vercel Functions 和您的前端框架集成。它也不是 Vercel 的原生服務(wù),而是由與 Neon 的合作伙伴關(guān)系提供支持的。
在儀表板中創(chuàng)建 Vercel Postgres 數(shù)據(jù)庫時(shí),會(huì)在您指定的區(qū)域中配置運(yùn)行 PostgreSQL 版本 15 的無服務(wù)器數(shù)據(jù)庫。該區(qū)域是讀寫操作的路由,數(shù)據(jù)庫創(chuàng)建后不能更改。
可用于部署無服務(wù)器數(shù)據(jù)庫的區(qū)域并不多。目前僅支持克利夫蘭、華盛頓、波特蘭、法蘭克福、新加坡和悉尼。
區(qū)域的選擇對(duì)于應(yīng)用程序的性能至關(guān)重要,因?yàn)閿?shù)據(jù)庫越接近查詢它的函數(shù),響應(yīng)時(shí)間就越快。
另一個(gè)需要考慮的重要事項(xiàng)是 Vercel Postgres 數(shù)據(jù)庫并不總是處于活動(dòng)狀態(tài)。如果在指定的持續(xù)時(shí)間內(nèi)沒有傳入請(qǐng)求,則數(shù)據(jù)庫將縮減為零,從而有效地暫停計(jì)算時(shí)間計(jì)費(fèi)。這意味著,在非活動(dòng)狀態(tài)后訪問數(shù)據(jù)庫時(shí),您可能會(huì)遇到長(zhǎng)達(dá) 1 秒的冷啟動(dòng)。在 Pro 計(jì)劃中,您可以配置非活動(dòng)時(shí)間閾值以降低冷啟動(dòng)頻率。
Vercel postgres 數(shù)據(jù)庫的總成本是根據(jù)五個(gè)因素計(jì)算的:
- 數(shù)據(jù)庫:您賬戶中的數(shù)據(jù)庫數(shù)量。免費(fèi)計(jì)劃包括 1 個(gè)數(shù)據(jù)庫,而 Pro 計(jì)劃包括 1 個(gè)數(shù)據(jù)庫,每個(gè)額外的數(shù)據(jù)庫收費(fèi) 1.00 美元。
- 計(jì)算時(shí)間:計(jì)算時(shí)間根據(jù)數(shù)據(jù)庫的活動(dòng)時(shí)間乘以可用 CPU 數(shù)計(jì)算得出。在免費(fèi)計(jì)劃中,數(shù)據(jù)庫設(shè)置了 0.25 個(gè)邏輯 CPU,而在 Pro 計(jì)劃中,它們從 1 個(gè) CPU 開始,用戶可以靈活地修改分配的 CPU 數(shù)量。在處理請(qǐng)求時(shí)或在最后一個(gè)請(qǐng)求后配置的空閑超時(shí)期限內(nèi),數(shù)據(jù)庫被視為活動(dòng)數(shù)據(jù)庫。免費(fèi)計(jì)劃包括每月 100 小時(shí)的計(jì)算時(shí)間,而 Pro 計(jì)劃包括 100 小時(shí),每增加一小時(shí)收費(fèi) 0.10 美元。
- 存儲(chǔ):存儲(chǔ)計(jì)算為您的賬戶的所有 Postgres 數(shù)據(jù)庫每月使用的最大存儲(chǔ)量。在免費(fèi)計(jì)劃中,用戶的存儲(chǔ)空間限制為 512MB,而在 Pro 計(jì)劃中,用戶的存儲(chǔ)空間限制為 1GB,每增加 GB 的額外存儲(chǔ)空間為 0.12 美元。
- 寫入數(shù)據(jù):寫入數(shù)據(jù)是從計(jì)算資源提交到存儲(chǔ)的數(shù)據(jù)量,包括插入、更新、刪除和架構(gòu)遷移等操作。在免費(fèi)計(jì)劃中,用戶限制為 512MB,而在 Pro 計(jì)劃中,用戶限制為 1GB,每增加 GB 額外支付 0.096 美元。
- 數(shù)據(jù)傳輸:數(shù)據(jù)傳輸是從數(shù)據(jù)庫傳出的數(shù)據(jù)量。在免費(fèi)計(jì)劃中,用戶限制為 512MB,而在 Pro 計(jì)劃中,用戶限制為 1GB,額外數(shù)據(jù)傳輸?shù)馁M(fèi)用為每增加 GB 0.10 美元。
Vercel postgres 的替代品是 Cloudflare D1。Cloudflare D1 是基于 SQLite 構(gòu)建的 Workers 平臺(tái)原生的無服務(wù)器數(shù)據(jù)庫,使您能夠在 Cloudflare 邊緣網(wǎng)絡(luò)上存儲(chǔ)和檢索數(shù)據(jù)。
Cloudflare D1[4] 是一個(gè)全球數(shù)據(jù)庫,這意味著您的數(shù)據(jù)可在全球所有 Cloudflare 數(shù)據(jù)中心使用。您的數(shù)據(jù)不限于單個(gè)區(qū)域,區(qū)域的選擇不會(huì)影響應(yīng)用程序的性能。
D1 數(shù)據(jù)庫可從 Cloudflare 儀表板訪問,也可以通過 SDK 通過 Workers 訪問,或與 Drizzle 等 ORM 庫集成。
Cloudflare D1 也基于即用即付模式,這意味著您只需為使用的資源付費(fèi),并且可以像 Vercel 一樣擴(kuò)展到零,而不會(huì)在重新上線時(shí)遭受冷啟動(dòng)。在 Cloudflare D1 上,您無需按數(shù)據(jù)傳輸、計(jì)算時(shí)間或創(chuàng)建的數(shù)據(jù)庫數(shù)量付費(fèi),而是按存儲(chǔ)的數(shù)據(jù)量和讀取和寫入的行數(shù)付費(fèi)。
讀取的行數(shù)是查詢讀?。⊕呙瑁┑男袛?shù),與每行的大小無關(guān),而寫入的行數(shù)則衡量寫入 D1 數(shù)據(jù)庫的行數(shù)。請(qǐng)注意,Cloudflare 對(duì)行掃描收費(fèi),而不是對(duì)查詢返回的行數(shù)收費(fèi)。因此,在使用 Cloudflare D1 時(shí),使用索引優(yōu)化數(shù)據(jù)庫對(duì)于降低成本至關(guān)重要。在表上定義索引可減少查詢?cè)诤Y選該索引字段時(shí)讀取的行數(shù)。
免費(fèi)計(jì)劃包括 1GB 的存儲(chǔ)空間,而在付費(fèi)計(jì)劃中,每增加 GB 數(shù)據(jù)需要支付 0.75 美元。
對(duì)于請(qǐng)求,在免費(fèi)計(jì)劃中,您每天最多可以發(fā)出 5M 行讀取請(qǐng)求和 100,00 行寫入請(qǐng)求。在付費(fèi)計(jì)劃中,您每月最多有 25B 行讀取請(qǐng)求和 50M 行寫入請(qǐng)求。其他請(qǐng)求的收費(fèi)標(biāo)準(zhǔn)為每 1M 行讀取請(qǐng)求 0.001 美元,每 1M 行寫入請(qǐng)求 1 美元。
Cloudflare vs Vercel:圖像優(yōu)化
圖片
Vercel Images 是一項(xiàng)根據(jù)大小、質(zhì)量、格式和像素密度等因素管理圖像上傳、優(yōu)化和交付的服務(wù)。經(jīng)過優(yōu)化的圖像會(huì)自動(dòng)緩存在 Vercel 邊緣網(wǎng)絡(luò)上,確保在再次請(qǐng)求時(shí)更快地交付給用戶。
使用該服務(wù)的最佳方式是與 Next.js、Astro 和 Nuxt 等框架集成。當(dāng)您在每個(gè)框架中使用該 <Images>
組件并在 Vercel 上部署項(xiàng)目時(shí),平臺(tái)會(huì)自動(dòng)調(diào)整您的圖像并針對(duì)不同的屏幕尺寸進(jìn)行優(yōu)化。
Vercel Images 的定價(jià)基于計(jì)費(fèi)周期內(nèi)請(qǐng)求的唯一源圖像數(shù)量。源圖像是傳遞給 src
屬性的值,可以生成多個(gè)不同大小和質(zhì)量的優(yōu)化圖像。
免費(fèi)計(jì)劃包括 1000 個(gè)源圖像請(qǐng)求,而 Pro 計(jì)劃包括 5000 個(gè)源圖像請(qǐng)求,每 1000 個(gè)源圖像收費(fèi) 5 美元。
此外,將優(yōu)化圖像從 Vercel 的邊緣網(wǎng)絡(luò)傳送到客戶端時(shí)使用的帶寬需要付費(fèi)。
Cloudflare Images 是 Cloudflare 的一項(xiàng)類似服務(wù),用于管理來自 Cloudflare 邊緣網(wǎng)絡(luò)的圖像的上傳、優(yōu)化和交付。圖像會(huì)自動(dòng)調(diào)整大小、壓縮并轉(zhuǎn)換為適合用戶設(shè)備和網(wǎng)絡(luò)條件的最有效格式。
您可以通過 Cloudflare 控制面板或 Cloudflare API 將圖像上傳到 Cloudflare Images。上傳后,您可以直接通過 Cloudflare CDN 或 Cloudflare API 訪問圖像。
上傳圖像后,可使用圖像變體調(diào)整圖像大小,以適應(yīng)不同的使用情況。默認(rèn)情況下,圖片使用公共變體提供,但您也可以針對(duì)不同的屏幕尺寸、設(shè)備和網(wǎng)絡(luò)條件創(chuàng)建多達(dá) 100 個(gè)自定義變體。您還可以在通過 URL 或 Cloudflare Workers 請(qǐng)求時(shí)轉(zhuǎn)換圖像,但請(qǐng)注意,轉(zhuǎn)換與交付的圖像分開計(jì)費(fèi)。
Cloudflare Images 定價(jià)基于后付費(fèi)模式,根據(jù)每月交付、轉(zhuǎn)換和存儲(chǔ)的圖像總數(shù)收費(fèi)。
如果您將圖片存儲(chǔ)在 Cloudflare Images 中,則每存儲(chǔ) 100,000 張圖片收費(fèi) 5 美元,瀏覽器請(qǐng)求并交付給用戶的圖片每 100,000 張收費(fèi) 1 美元。如果您對(duì)存儲(chǔ)在其他地方(如 S3 或 R2 存儲(chǔ)桶)的圖片進(jìn)行優(yōu)化,則不會(huì)對(duì)交付的圖片計(jì)費(fèi)。
除了存儲(chǔ)和交付圖像外,您還可以對(duì)轉(zhuǎn)換的圖像收費(fèi)。唯一轉(zhuǎn)換是指轉(zhuǎn)換原始圖像的請(qǐng)求,每 100,000 次轉(zhuǎn)換收費(fèi) 0.50 美元。轉(zhuǎn)換價(jià)格不包括您之前設(shè)置的款式/規(guī)格。
結(jié)論
通過查看 Vercel 和 Cloudflare 的功能和定價(jià),我們可以看到 Cloudflare 是 Vercel 在 2024 年提供的所有主要服務(wù)的絕佳替代品。
如果您需要 Vercel 的替代方案來托管您的網(wǎng)站或 Web 應(yīng)用程序:Cloudflare Pages。如果您需要 Vercel 的替代方案來運(yùn)行無服務(wù)器功能:Cloudflare Workers。如果您需要 Vercel 的替代方案來存儲(chǔ)數(shù)據(jù):Cloudflare KV 和 Cloudflare D1。如果您需要 Vercel 的替代品進(jìn)行圖像優(yōu)化:Cloudflare Images。
當(dāng)然,您不需要將整個(gè)應(yīng)用程序遷移到 Cloudflare,完全離開 Vercel。您可以像 Ilias 一樣采用混合方法,僅將應(yīng)用程序的某些部分遷移到 Cloudflare,從而做出更好的開發(fā)選擇并優(yōu)化您的網(wǎng)站或應(yīng)用程序,以降低成本并提高性能。
您也可以采取緩慢的方法,逐步將應(yīng)用程序遷移到 Cloudflare,從應(yīng)用程序中最關(guān)鍵的部分開始,然后根據(jù)需要移動(dòng)其余部分。
原文:https://flaremingo.com/blog/cloudflare-vs-vercel-in-depth-comparison/