2016-06-14 99 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