[英]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 插件非常簡單。
安裝 package
npm install gatsby-plugin-fastify fastify
將 fastify-plugin 添加到你的 gatsby.config
plugins: [
{
resolve: `gatsby-plugin-fastify-klyngen`,
options: {
features: {},
},
},
...otherPlugins
]
npx gserve
Fastify 應該在像 Nginx 這樣的合適的 Web 服務器之后。 我還建議將服務器放在 CDN 或緩存后面以獲得更好的性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.