【问题标题】:Pre-render a static website from REST-api and templates?从 REST-api 和模板预渲染静态网站?
【发布时间】:2025-11-23 02:05:01
【问题描述】:

我有一个 rest-api,我将使用它使用一些基本的模板语言来呈现 html。我想知道是否有任何好的平台或服务来预渲染 HTML 文件并静态地提供它们。性能和可扩展性。

我需要连续地预渲染页面,比如每 24 小时一次,并且还应该可以告诉系统以某种方式重新渲染特定页面。我对大多数开源语言都很熟悉,node 是我的最爱。

【问题讨论】:

  • 所有的 HTML 页面都交叉链接了吗?换句话说,是否可以加载“主页” index.html 页面并通过跟随超链接爬取整个站点?
  • 是的,但我也会提供站点地图。

标签: node.js rest static frontend


【解决方案1】:

在我看来,最直接的方法是使用两层:渲染服务器和缓存服务器。当缓存服务器启动时,它会爬取渲染服务器上的每个 url,并将预渲染的 HTMLS 文件存储到其本地目录中。为简单起见,您可以镜像“目录结构”并使资源路径相同。换句话说,对于呈现服务器上的每个 URL,如下所示:

http://render.xyz/path/to/resource

您在缓存服务器上创建一个目录结构/path/to,并在其中放入一个文件resource

您的最终用户无需了解此架构。他们像这样向缓存服务器发出请求:

http://cache.xyz/path/to/resource

缓存服务器为他们提供他们正在寻找的结果。

有很多方法可以告诉缓存服务器刷新(重新生成)页面。您可以添加一个“隐藏”目录,我们称之为.cache-command,并使用它来处理刷新请求。例如,要告诉缓存服务器刷新资源,您可以使用这样的 URL:

http://cache.xyz/.cache-command/refresh/path/to/resource

当缓存服务器收到该请求时,它会刷新资源。

这种方法的一个优点是您的缓存服务器可以完全独立于渲染服务器。它们可以用不同的语言编写,在不同的硬件上运行,或者它们可以是同一个 nodejs 应用程序的一部分。无论哪种方式最适合您。

【讨论】: