【问题标题】:How to properly run gatsby with SSR in a production environment如何在生产环境中使用 SSR 正确运行 gatsby
【发布时间】:2022-11-02 23:28:42
【问题描述】:

我很难找到有关如何在自定义生产环境(不是 Gatsby Cloud 或 Netlify)中正确设置使用 SSR(服务器端渲染)的 gatsby 端的任何有用文档

在他们的 SSR 文档中有一个部分

服务器端渲染需要一个正在运行的 NodeJS 服务器。您可以将运行 gatsby 的 NodeJS 放在像 Fastly 这样的内容交付网络 (CDN) 后面,但这也需要额外的基础设施(如监控、日志记录和崩溃恢复)。

所以我的一般想法是将这些都放在某个 Docker 容器中并运行gatsby serve

但是根据gatsby serve (https://www.gatsbyjs.com/docs/reference/gatsby-cli/#serve) 的文档,这不应该用于生产

在 Gatsby 站点的根目录中,为您的站点的生产版本提供服务测试

可以使用服务生产吗?使用时需要注意哪些安全问题?是否有详细的文档如何在自定义环境中进行设置?

【问题讨论】:

    标签: node.js reactjs gatsby


    【解决方案1】:

    自定义服务器上没有关于 SSR 模式的文档。但一般来说,您希望使用 Express 之类的东西来提供静态文件(而不是 gatsby serve),然后您可以查看 gatsby-plugin-netlify 和 gatsby-plugin-fastify 以获取灵感,因为它们支持 SSR。

    服务和运行时 SSR 逻辑你必须使用我提到的那些插件自己编写作为灵感。该框架不处理应用程序的服务,Gatsby Cloud 和 Netlify 等平台可以。或者在您的情况下,自定义服务器。

    您可能会发现这很有用 https://github.com/wille/gatsby-plugin-express 还应该知道有很多超级简单的部署方法(Gatsby Cloud、Netlify、Vercel),因此您不需要自己的服务器。不能使用 serve 命令的原因是缓存、重定向、标头等。

    【讨论】:

    • 在 Vercel SSR 中似乎不起作用。
    【解决方案2】:

    我有同样的问题,无法找到一个完整的解决方案。最接近的解决方案是使用gatsby-plugin-fastify。它有很多不错的功能。但是,它也有一些缺点。它没有像 gatsby-cloud 那样处理后备路由。 Wich 很容易修复。

    我对插件做了一些修改。并撞上了 fastify 包。在可以与原始贡献者 repo 合并之前,您可以使用我的包版本。 gatsby-plugin-fastify-klyngen

    使用原始的 fastify 插件非常简单。

    1. 安装包
      npm install gatsby-plugin-fastify fastify

    2. 将 fastify-plugin 添加到你的 gatsby.config

        plugins: [
          {
            resolve: `gatsby-plugin-fastify`,
            options: {
              features: {},
            },
          },
          ...otherPlugins
        ]
      
      
      1. 运行服务器
        npx gserve

        Fastify 应该在像 Nginx 这样的合适的 Web 服务器之后。我还建议将服务器放在 CDN 或缓存后面以获得更好的性能。

        编辑: gatsby-plugin-fastify 现在支持回退路由。

    【讨论】:

    • gatsby-plugin-fastify 0.9.5 修复了大部分重定向问题
    猜你喜欢
    • 1970-01-01
    • 2020-04-20
    • 2021-11-10
    • 2020-01-02
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多