簡體   English   中英

如何在生產環境中使用 SSR 正確運行 gatsby

[英]How to properly run gatsby with SSR in a production environment

我很難找到有關如何在自定義生產環境(不是 Gatsby Cloud 或 Netlify)中正確設置使用 SSR(服務器端渲染)的 gatsby 端的任何有用文檔

在他們的 SSR 文檔中有一個部分

服務器端渲染需要一個正在運行的 NodeJS 服務器。 您可以將運行 gatsby serve 的 NodeJS 放在像 Fastly 這樣的內容交付網絡 (CDN) 后面,但這也需要額外的基礎設施(如監控、日志記錄和崩潰恢復)。

所以我的一般想法是將這一切都放在一些 Docker 容器中並運行gatsby serve

但是根據gatsby serve的文檔( https://www.gatsbyjs.com/docs/reference/gatsby-cli/#serve ),這不應該用於生產

在 Gatsby 站點的根目錄中,提供站點的生產版本以進行測試

可以使用服務生產嗎? 使用時需要注意哪些安全問題? 是否有詳細的文檔如何在自定義環境中進行設置?

自定義服務器上沒有關於 SSR 模式的文檔。 但一般來說,您希望使用 Express 之類的東西來提供 static 文件(不是 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 命令的原因是緩存、重定向、標頭等。

我有同樣的問題,無法找到一個完整的解決方案。 最接近的解決方案是使用gatsby-plugin-fastify 它有很多不錯的功能。 但是,它也有一些缺點。 它沒有像 gatsby-cloud 那樣處理后備路由。 Wich 很容易修復。

我對插件做了一些修改。 並撞上了 fastify 包。 在可以與原始貢獻者存儲庫合並之前,您可以使用我的 package 版本。 gatsby-plugin-fastify-klyngen

使用原始的 fastify 插件非常簡單。

  1. 安裝 package
    npm install gatsby-plugin-fastify fastify

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

  plugins: [
    {
      resolve: `gatsby-plugin-fastify-klyngen`,
      options: {
        features: {},
      },
    },
    ...otherPlugins
  ]

  1. 運行服務器
    npx gserve

Fastify 應該在像 Nginx 這樣的合適的 Web 服務器之后。 我還建議將服務器放在 CDN 或緩存后面以獲得更好的性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM