两周前,我们宣布与 Netlify 合作,在 Netlify Functions 上推出服务器端渲染 (SSR) 的实验性支持。今天,我们宣布在 Netlify 新的 Edge Functions 平台上支持 SSR。Edge Functions 于今天正式上线,Astro 在第一天就提供了支持。
借助 SSR 和 Astro,您可以
- 构建难以通过 SSG(静态站点生成)扩展的大型、由 CMS 支持的站点。
- 构建需要身份验证或持久状态的应用程序,例如电子商务后端。
- 使用简化的类似 HTML 的语法,仅在需要时才加入少量 JavaScript。
通过**边缘渲染**,您可以将 SSR 更贴近用户,更快地将首个字节传送到浏览器。结合在边缘提供静态资源,这为您提供了最佳网络性能。Astro 致力于让高性能内容站点易于实现,而 Netlify 新的 Edge Functions 平台是您今天部署 Astro SSR 应用程序的理想场所。
开始使用前,请安装 Netlify 适配器
npm install @astrojs/netlify
然后将适配器添加到您的 astro.config.mjs
文件中
import { defineConfig } from "astro/config"import netlify from "@astrojs/netlify/edge-functions"
export default defineConfig({ adapter: netlify(),})
从 Netlify Functions 迁移
Astro 已在 Netlify Functions 上可用,这是一个基于 Node.js 的无服务器运行时。通过 Edge Functions,您可以获得更好的性能,我们已尽力使其切换尽可能简单。
兼容性
Netlify Edge Functions 在 Deno 之上运行,但大多数 Astro 应用程序无需更改代码即可部署到新环境。Netlify 适配器会负责编译和打包您的源代码,使其可以在 Deno 上运行。
如果您使用的依赖项依赖于 Node.js 的内置模块,则可能无法从 Netlify Functions 迁移。如果是这样,Netlify Functions 仍然是大多数用例的绝佳平台,并为 Node 包支持提供标准的 Node.js 运行时。
如果您使用 <Markdown />
组件,它目前无法在非 Node 环境中运行。目前的替代方案是使用 .md
页面。
迁移
首先,升级到最新版本的 @astrojs/netlify
,如下所示
npm install @astrojs/netlify@latest
然后,更新您的 astro.config.mjs
文件以导入 Edge Functions 适配器
import { defineConfig } from 'astro/config'; import netlify from '@astrojs/netlify/functions'; import netlify from '@astrojs/netlify/edge-functions';
export default defineConfig({ adapter: netlify()});
这样就可以了!下次构建时,它将生成一个与 Edge Functions 兼容的 SSR 构建,然后可以使用 netlify deploy --build
进行部署。
合作伙伴
Netlify 是 Astro SSR 的首批合作伙伴。即使自该公告发布以来的短时间内,我们也看到了其他托管平台的巨大支持,它们的适配器要么已经建成,要么正在开发中。
如果您想为其他平台构建适配器,请访问我们的 Discord 频道,我们很乐意为您提供帮助!