订阅以接收新文章的通知:

利用 Pages Functions 普遍可用性为 Cloudflare Pages 上的网站丰富内容

2022-11-17

5 分钟阅读时间
这篇博文也有 EnglishFrançaisDeutsch日本語PortuguêsEspañol繁體中文版本。

在 2021 年 4 月推出 Pages 之前,我们就知道这将迎来某种神奇的变化——一种“恰到好处”的体验。我们设想的是简单而又流畅的体验,让_任何开发人员_都可以在几秒钟内推出一个网站,并通过 Cloudflare 生态系统的其他部分为其添加更多内容。

Spice up static sites on Cloudflare Pages with Page Functions

几个月后,2021 年 11 月我们宣布 Pages 是一个全栈平台时,这一愿景成为了现实。我们的 Pages 梦想并不止于创建一个静态网站开发平台。由于 Cloudflare Workers 已经集成到我们的生态系统中,我们知道还有许多潜力有待开发。随着 Pages Functions 的推出,开发人员能够开发任何静态网站,并利用 Cloudflare Workers 的强大功能轻松添加动态内容。

去年 Functions 进入公测以来,我们一直在深入探索开发人员在项目中需要什么样的全栈功能,并着手对 Functions 的体验进行微调,于是才有了今天的样貌。

我们很高兴地宣布,Pages Functions 现已普遍可用。

Functions 回顾

虽然在 Pages 环境中被称为“Functions”,但这些函数在 Cloudflare 网络上运行时,其实就是另一“装扮”的 Cloudflare Workers。Pages 利用 Workers 的强大功能和可扩展性,并对其进行专门化处理,以与用户熟悉和喜欢的 Pages 体验相匹配。

有了 Functions,您可以大胆构想为网站添加动态功能的各种可能性,例如与存储解决方案集成、连接到第三方服务、利用您最喜欢的全栈框架使用服务器端渲染等。随着 Pages Functions 开始面向生产流量,我们来探索一下这个版本中改进和添加的一些令人期待的功能。

体验

使用 Git 进行部署

喜欢编码?我们会处理基础设施,编码交给您自己。

只需编写一个 JavaScript/Typescript Function,并通过提交代码给 Git 提供商,将其放入函数目录中。我们快如闪电的 CI 系统将构建您的代码,并与您的静态资产一起部署。

直接上传您的 Functions

倾向于自己处理构建过程?有一个特殊的 git 提供商尚不支持 Pages?没问题!把您的 Function 放到 functions 文件夹中后,您就可以用您喜欢的 CI 工具来构建,然后把您的项目上传到 Pages 进行部署。

调试 Functions

在公测期间,我们了解到,您和您的团队最看重的是可见性。与 Cloudflare Workers 一样,我们构建了一种简单的方式,让您在处理请求时观察您的函数——您越快了解问题,就能越快做出反应。

现在您可以通过“跟踪”日志,轻松查看 Functions 日志。对于结果和请求 IP 等基本信息,您可以前往 Pages 仪表板获取相关日志。

对于更具体的过滤器,您可以使用

来接收控制台和异常日志的实时信息,以了解您的 Function 收到的每个请求。

wrangler pages deployment tail

获得实时 Functions 指标

在仪表板上,Pages 以请求成功/错误指标和调用状态等形式为您的 Functions 汇总数据。您可以参考指标仪表板,这不仅有助于更好地了解每个项目的使用情况,还可以通过捕捉成功/错误数量来检查您的 Functions 的运行状况。

与 Cloudflare 生态系统快速集成

存储绑定

想要实现真正的全栈化?我们知道,找到一个适合自己需求和生态系统的存储解决方案并非易事,但也不一定困难重重!

借助 Functions,您可以充分利用我们的各种存储产品,包括 Workers KV、Durable Objects、R2、D1 以及即将推出的 QueuesWorkers Analytics Engine!只需创建您的命名空间、存储桶或数据库,并在 Pages 仪表板中添加您的绑定,只需点击几下即可完善并运行您的全栈站点。

从嵌入快速评论系统到推出自己的身份验证,再到创建数据库支持的电子商务网站,与我们的开发人员平台中的现有产品集成,这些功能为您的站点提供了无数用例。

秘密捆绑

除添加了在构建时和运行时可用于项目的环境变量之外,现在还可以向您的项目添加“秘密”。这些都是加密的环境变量,任何仪表板界面均无法查看,是 API 令牌或密码等敏感数据的理想存储场所。

与第三方服务整合

Pages 的目标始终是主动帮助您构建喜欢使用的工具。在公测期间,我们也发现了您使用 Functions 与常见的第三方服务集成的一致模式。我们现成的代码片段 Pages Plugins 为您提供即插即用的体验,构建心仪的应用程序生态系统。

从本质上讲,Pages Plugin 是一个可重复使用、可自定义的运行时代码块,可集成到 Pages 应用程序的任何位置。它是一个“可组合”的 Pages Function,让 Plugins 全面利用 Functions 的强大功能(即 Workers),包括设置中间件、参数化路由和静态资产的能力。

借助 Pages 插件,您可以与大量第三方应用程序集成——包括官方支持的 SentryHoneycombStytchMailChannels 等。

使用最喜欢的全栈框架

我们旨在满足开发人员需求的精神也体现在 Javascript 框架上。我们不仅大力支持已广泛采用的框架,也支持尚未诞生的新框架,我们的团队与大量框架作者合作,让您有机会使用他们的新技术,即时在 Pages 上进行部署。

现已与 Next.js 13 等框架兼容!

最近,我们宣布了支持选择加入 Edge Runtime 的 Next.js 应用程序。今天,我们兴奋地宣布,我们现已与 Next.js 13 兼容。Next.js 13 为 Next.js 框架提供了最常请求的现代范式,包括嵌套路由、React 18's Server Components 和流传输。

有不同的框架偏好?没问题。

使用 Pages 实现全栈化,以充分利用服务器端渲染 (SSR) 和与其他官方支持的许多框架,例如 RemixSvelteKitQwikCity、SolidStartAstroNuxt。您可以查看我们的相关博客文章,其中介绍了 Pages 上的 SSR 支持以及如何开始使用其中一些框架。

利用高级模式快速部署

虽然 Pages Functions 是由 Workers 提供支持,但我们理解,从表面上来看,它们并不完全相同。不过,对于那些可能正在使用 Workers 并希望试用 Cloudflare Pages 的现有用户,我们提供了一条直接路径,助您快速入门。

如果您已有一个单一的 Worker,并想用简单的方法在 Pages 上实现全栈化,您可以使用 Pages Function 的“高级模式”。在您项目的输出目录中生成一个名为 _worker.jsES 模块 Worker,然后进行部署!

对于框架作者,或许还有更复杂的用例,不适用我们基于文件的路由器,这可能会特别有帮助。

无限扩展

因此,今天我们兴奋地宣布,Functions 已普遍可用,实现流量可扩展。在公测期间,我们限制每天 10 万个免费请求,让您试用该功能。虽然现在也有每天 10 万个免费请求的限制,但现在您可以通过付费来实现真正的无限扩展。

由于 Functions 只是“特殊”的 Workers,这一公告发布后,您的 Functions 使用量将开始反映在您的 Workers 付费订阅账单或 Workers Enterprise 合同账单上。与 Workers 一样,如果加入付费计划,我们有两种使用模式供您选择——Bundled 和 Unbound,并相应计费。

作为 Cloudflare“给互联网的礼物”,使用 Pages 品牌,您将可无限请求免费静态资产,且将主要按动态请求计费。您可以 阅读我们的文档,进一步了解 Functions 的计费方式。

立即开始使用

要开始体验 JAM,请访问 Pages Functions 文档查阅我们的博客,了解可用来部署您的第一个全栈应用程序的最佳框架。开始构建项目时,请务必在 Cloudflare Developers Discord 页面下的 #functions 频道告知我们。祝您构建愉快!

我们保护整个企业网络,帮助客户高效构建互联网规模的应用程序,加速任何网站或互联网应用程序抵御 DDoS 攻击,防止黑客入侵,并能协助您实现 Zero Trust 的过程

从任何设备访问 1.1.1.1,以开始使用我们的免费应用程序,帮助您更快、更安全地访问互联网。要进一步了解我们帮助构建更美好互联网的使命,请从这里开始。如果您正在寻找新的职业方向,请查看我们的空缺职位
Developer WeekCloudflare PagesCloudflare WorkersServerlessFull StackJAMstackDeveloper Platform开发人员

在 X 上关注

Nevi Shah|@nevikashah
Cloudflare|@cloudflare

相关帖子

2024年10月31日 13:00

Moving Baselime from AWS to Cloudflare: simpler architecture, improved performance, over 80% lower cloud costs

Post-acquisition, we migrated Baselime from AWS to the Cloudflare Developer Platform and in the process, we improved query times, simplified data ingestion, and now handle far more events, all while cutting costs. Here’s how we built a modern, high-performing observability platform on Cloudflare’s network. ...