Cloudflare Pages 是如何支持SSR框架的?

Cloudflare Pages 原本是一个静态网站托管平台,但它也支持 SSR(服务器端渲染) 框架,主要是通过 Cloudflare Workers 来实现的。它的 SSR 机制适用于 Next.js、Nuxt、Remix、Qwik、SolidStart、SvelteKit 等流行的全栈框架。各种框架无需修改即可部署在Pages,主要是通过各种垫片实现的,详情请接着看下面内容。


Cloudflare Pages 支持 SSR 的方式

Cloudflare Pages 并不能直接执行服务器端代码(因为它是静态托管平台),但是它可以结合 Cloudflare Functions(基于 Workers)来支持 SSR。其原理如下:

1. 通过 Cloudflare Functions(Workers) 处理 SSR 请求

  • Cloudflare Pages 主要托管静态资源(HTML、CSS、JS)。

  • Cloudflare Functions(Workers) 处理动态请求,执行 SSR 代码,并返回 HTML 响应。

  • 请求流程

    1. 用户访问某个页面(如 /about)。
    2. Cloudflare Pages 发现该路由需要服务器端渲染。
    3. Cloudflare Functions 运行 SSR 代码,获取数据,生成 HTML。
    4. HTML 返回给用户,完成 SSR 渲染。

不同框架在 Cloudflare Pages 上的支持情况

1. Next.js

Cloudflare Pages 官方支持 Next.js,但 仅支持 App Router(基于 React Server Components) ,不支持老的 Pages Router(getServerSideProps 等 API)。

  • 使用 @cloudflare/next-on-pages 适配 Next.js。
  • 自动将 SSR 代码运行在 Cloudflare Functions 上。

2. Nuxt 3

  • Nuxt 3 支持 Cloudflare 作为适配器,使用 nitro 运行在 Cloudflare Functions 上。
  • 需要在 nuxt.config.ts 中指定 preset: 'cloudflare'

3. Remix

  • Remix 原生支持 Cloudflare,默认可以运行在 Cloudflare Workers 上。
  • Remix 使用 @remix-run/cloudflare 作为运行时适配器。

4. SvelteKit

  • SvelteKit 通过 adapter-cloudflare 适配 Cloudflare Pages。
  • 配置 svelte.config.js 选择 @sveltejs/adapter-cloudflare

5. Qwik

  • Qwik 支持 Cloudflare Pages,使用 @builder.io/qwik-city 进行适配。

Cloudflare Pages 适配 SSR 框架的优劣

✅ 优势

  • 免费计划可用(但有请求限制)。
  • 基于 Cloudflare Workers,全球边缘网络加速
  • 轻量、无服务器架构,低成本运行 SSR
  • 支持多种框架(Next.js、Nuxt、Remix、SvelteKit 等)

❌ 限制

  • 不支持 Node.js 原生 API (例如 fspath)。
  • 仅支持部分 SSR 框架的特定模式(Next.js 只能用 App Router)。
  • Cloudflare Functions(Workers)有 CPU 时间限制(50ms) ,计算密集型任务可能受影响。

如何部署 SSR 框架到 Cloudflare Pages

Next.js 为例:

  1. 安装 Cloudflare CLI

    复制代码
    sh
    复制编辑
    npm install -g wrangler
  2. 安装 Next.js 适配器

    perl 复制代码
    sh
    复制编辑
    npm install @cloudflare/next-on-pages
  3. 修改 next.config.js

    javascript 复制代码
    js
    复制编辑
    const { withCloudflare } = require('@cloudflare/next-on-pages/plugin');
    
    module.exports = withCloudflare({
      experimental: {
        appDir: true, // 必须使用 App Router
      },
    });
  4. 构建和部署

    ini 复制代码
    sh
    复制编辑
    npm run build
    npx wrangler pages deploy .vercel/output --project-name=my-nextjs-app

部署完成后,Cloudflare Pages + Cloudflare Functions 会自动处理 SSR 请求。


总结

Cloudflare Pages 通过 Cloudflare Functions(Workers) 实现 SSR,适用于 Next.js(App Router)、Nuxt、Remix、SvelteKit 等框架。如果你的项目需要 低延迟的全球分发 ,并且可以接受 无 Node.js API 的限制,那么 Cloudflare Pages 是一个不错的选择。

相关推荐
少年阿闯~~3 分钟前
HTML——1px问题
前端·html
Never_Satisfied5 分钟前
在JavaScript / HTML中,实现`<iframe>` 自适应高度
开发语言·javascript·html
Mike_jia16 分钟前
SafeLine:自托管WAF颠覆者!一键部署守护Web安全的雷池防线
前端
brzhang24 分钟前
把网页的“好句子”都装进侧边栏:我做了个叫 Markbox 的收藏器,开源!
前端·后端·架构
VincentFHR2 小时前
Canvas 高性能K线图,支持无限左右滑动
前端·数据可视化·canvas
sophie旭2 小时前
一道面试题,开始性能优化之旅(3)-- DNS查询+TCP(二)
前端·面试·性能优化
面向星辰2 小时前
css选择器(继承补充)
前端·css
koooo~2 小时前
Vue3中的依赖注入
前端·javascript·vue.js
huuyii2 小时前
Nest 基础知识
前端
沢田纲吉2 小时前
《LLVM IR 学习手记(三):赋值表达式与错误处理的实现与解析》
前端·编程语言·llvm