【问题标题】:Function to output HTML and store the result in firebase hosting输出 HTML 并将结果存储在 Firebase 托管中的功能
【发布时间】:2019-02-18 21:12:10
【问题描述】:

我想响应 Firebase 事件以生成(保持更新)以生成 HTML 页面并将它们放入 Firebase 托管,以便它们可以立即可用。除了关于将生成的 HTML 上传到 Firebase 托管的部分外,我已经让它工作了。似乎我不能这样做,但我希望所有页面都预先呈现并准备好快速加载。

我有连接到托管的云功能,但这是我想避免的在请求周期中从数据库获取的旧方法。

this page 上显示“预渲染您的单页应用程序以改进 SEO”。这就是我想要的。可能吗?如何存储来自 HTTP 函数的预渲染页面?

【问题讨论】:

    标签: firebase google-cloud-functions firebase-hosting


    【解决方案1】:

    “预先呈现您的单页应用程序以改进 SEO”。在该页面上讨论的是在将内容提供给请求方之前在云中预渲染。在发出请求之前进行数据更新时,它不会生成静态文件。通常,对于大多数用例而言,使用适当的缓存标头进行预渲染就足够了。

    如果您真的想在数据更改时预生成所有页面,您可以这样做,但这会更复杂。有一些 good articlesguides 关于在持续集成完成后部署到 Firebase 托管。除了触发构建/部署的因素是数据驱动而不是代码更改之外,一般想法对于听起来像您想要的东西都是正确的。

    【讨论】:

    • 这是答案,因为您是对的,Google 所说的“预渲染”是将其渲染一次到他们的 CDN 中,这在您使用 Cache-Control 标头时会自动发生,例如, 300 秒(5 分钟):response.set('Cache-Control', 'public, max-age=300, s-maxage=300'); 你仍然在等待第一个请求,这很不幸。
    【解决方案2】:

    预渲染 HTML 以便搜索引擎可以使用 JSON-LD 等元数据,并且社交媒体平台可以使用 opengraph 以获取共享链接中的丰富卡片的方法是使用 Cloud Functions。您基本上在您的云函数中运行 Express/Pug(以前是 Jade)以在完成任何数据库/数据存储查找后以 HTML 响应。我已经实现了这个并且效果很好。

    Call functions via HTTP requests 提供了一些方向。您基本上添加了一些转发信息来自定义您的托管。这会将 HTTP 调用定向到在 Cloud Functions 中运行的 Express 服务器。查看 firebase 函数 github repo 以获取示例代码。

    【讨论】:

      猜你喜欢
      • 2020-06-13
      • 2018-11-12
      • 2018-10-31
      • 2020-08-03
      • 1970-01-01
      • 2017-08-14
      • 2021-07-11
      • 2020-05-14
      • 1970-01-01
      相关资源
      最近更新 更多