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 是一个不错的选择。

相关推荐
鹏多多2 小时前
jsx/tsx使用cssModule和typescript-plugin-css-modules
前端·vue.js·react.js
ssshooter3 小时前
复古话题:Vue2 的空格间距切换到 Vite 后消失了
前端·vue.js·面试
IamZJT_3 小时前
拒绝做 AI 的“饲养员” ❌:前端程序员在 AI 时代的生存与进化指南 🚀
前端·ai编程
MM_MS3 小时前
Halcon控制语句
java·大数据·前端·数据库·人工智能·算法·视觉检测
程序员Agions3 小时前
程序员武学修炼手册(二):进阶篇——小有所成,从能跑就行到知其所以然
前端·程序员
Van_Moonlight3 小时前
RN for OpenHarmony 实战 TodoList 项目:任务完成进度条
javascript·开源·harmonyos
小画家~3 小时前
第四十六: channel 高级使用
java·前端·数据库
Van_Moonlight3 小时前
RN for OpenHarmony 实战 TodoList 项目:深色浅色主题切换
javascript·开源·harmonyos
小贵子的博客3 小时前
Ant Design Vue <a-table>
前端·javascript·vue.js·anti-design-vue
m0_502724953 小时前
vue动态设置背景图片后显示异常
前端·css