我用 sveltekit:svelte: (@sveltejs/kit": "1.0.0-next.95) 开发了一个网站。这些文章是降价的,所以我使用 mdsvex 作为内容。
我在 cloudflare 页面中部署了带有适配器 vercel 和适配器静态的站点。
两个脚本都运行良好,我只是想了解将无服务器功能与 vercel 适配器一起使用与将站点作为静态导出与适配器静态运行的好处,该适配器静态可以在任何地方工作(包括 vercel,即使没有具有无服务器功能的适配器) .
adapter-static会将您的整个站点呈现为静态文件的集合,即 HTML、CSS 和 JS。 adapter-vercel将使用 Vercel 的无服务器功能进行动态服务器渲染。
如果您的整个站点可以预渲染,请使用适配器静态;否则,您可以使用adapter-vercel。来自SvelteKit 文档:
您的应用程序的至少某些页面很可能可以表示为简单的 HTML 文件,因为它们不包含动态或特定于用户的数据。这些页面可以由您的适配器预呈现。
如果您的整个应用程序都适合预渲染,您可以使用adapter-static,它将为每个页面生成HTML 文件,以及这些页面中的加载函数请求的其他文件。
文档还讨论了如何知道页面何时可预渲染:
基本规则是:对于一个可预渲染的页面,任何两个直接点击它的用户都必须从服务器获取相同的内容。
换句话说,任何涉及用户会话或身份验证的应用程序都不是适配器静态的候选者,即使应用程序中的各个页面都适合预呈现。
请注意,您仍然可以预渲染基于页面参数加载数据的页面,例如我们之前的 src/routes/blog/[slug].svelte 示例。预渲染器将拦截在负载中发出的请求,因此从 src/routes/blog/[slug].json.js 提供的数据也将被捕获。
您仍然可以将 adapter-vercel 用于完全静态的站点,但是页面的服务器渲染将在运行时而不是构建时发生,这可能会更慢和/或更昂贵。