2016-06-14 97 views
0

我一直在尋找到使用prerender我的角的應用程序,並遇到了一些麻煩思考如何實現它的生產,更具體地說,Heroku的。部署Prerender.io用Node.js的生產

所以我從上localhost,我可以localhost:9000運行我的應用程序,然後在另一個終端上的發言權localhost:9001運行prerender實例文檔理解。然後,使用prerender-node中間件,我可以說以下內容:

app.use(require('prerender-node').set('prerenderServiceUrl', 'http://localhost:9001'));

我不明白的是我怎麼能在localhost:9000,而不是運行prerender服務?我真的不想設置一個全新的服務器來運行prerender。我最關心的一個單獨的服務器是如何在生產中調用它?我是否必須將網址設置爲my-prerender-server.com這類需要購買該域的網址?這可能看起來很愚蠢,但我怎麼能保持它的美好和簡單?我想從一個應用程序如果可能的話所有運行...

任何意見或建議嗎?

回答

0

我使用預渲染和節點預渲染處理我的角1個應用的爬蟲。

你需要讓兩個服務器傾聽不同的域/端口。最簡單的方法是創建一個像prerender.company.com這樣的子域名,因爲這是免費的,並且應該很容易在你的dns中配置。

您可以運行可能在使用類似vhost一個單一的過程兩臺服務器,但它更容易和更簡單的運行兩個sepperate服務器。

+0

你能拓展你的設置了一下,你正在使用的自託管解決方案?當我在本地進行測試時,我剛剛下載了demo prerender應用程序,並使用了一條隨機命令,我在線看到該服務將綁定服務以偵聽localhost:9000。 'node-prerender'庫看起來像是一個簡單的例子,它只包含一行代碼來設置您的URL,但是在開發解決方案時有什麼特別的事情需要做? – germainelol

+0

'node-prerender'是一個簡單的單線程。服務器與演示程序幾乎完全相同,配置也相當簡單。您可以通過設置'process.env.PORT'等來更改端口。在我們的角度應用程序中,我們使用'window.prerenderReady = true',這允許我們設置何時加載預渲染器所需的所有資源。我們還設置了s3緩存插件,沒有任何問題。 – Thorning

+0

謝謝,所以'node-prerender'將決定請求是否來自bot。你在做'window.prerenderReady = true'時檢查什麼樣的東西?你將如何將這個'prerenderReady'變量傳遞給服務器,以便它知道何時開始渲染HTML? – germainelol