请注意,该项目已弃用。动态渲染不是推荐的方法,并且有更好的方法可以在网络上渲染。
在这一点上,Rendertron将无法积极维护。
Rendertron是一种无头的镀铬渲染解决方案,旨在即时渲染和序列化网页。
RenderTron旨在使您的Progressive Web应用程序(PWA)能够将正确的内容提供给任何不渲染或执行JavaScript的机器人。 RenderTron作为独立的HTTP服务器运行。 Rendertron渲染器请求使用无头铬的页面,当您的PWA完成加载并将响应序列序列回到原始请求时,请自动检测。要使用RenderTron,您的应用程序配置了中间件,以确定是否代表Rendertron的请求。 RenderTron与所有客户端技术(包括Web组件)兼容。
启动并运行服务后,您需要实现差分服务层。这会检查用户代理以确定是否需要预先登录。
这是可用于RenderTron服务的中间件列表:
Rendertron也与Prerender.io中间件兼容。注意:用户代理列表在其中不同。
GET /render/<url>
render端点将渲染您的页面并序列化页面。选项指定为查询参数:
mobile默认为false 。通过传递?mobile启用您网站的移动版本。refreshCache :Pass refreshCache=true忽略潜在的缓存渲染结果并将请求视为尚未缓存。新的渲染结果用于替换先前的结果。 GET /screenshot/<url>
POST /screenshot/<url>
screenshot端点可用于验证您的页面是否正确渲染。
两个端点都支持以下查询参数:
width默认为1000指定视口宽度。height默认为1000指定视口高。mobile默认为false 。通过传递?mobile启用您网站的移动版本。timezoneId指定时区的渲染。 POST中的JSON字符串可以提供其他选项。有关可用选项,请参见Puppeteer文档。您无法指定type (默认为jpeg )和encoding (默认为binary )参数。
GET /invalidate/<url>
invalidate端点将从配置的缓存(内存,文件系统或云数据存储)中删除用于<url>的缓存。
将查询参数设置为URL的一部分时,请确保正确编码它们。在JS中,这将是encodeURIComponent(myURLWithParams) 。例如,指定page=home :
https://render-tron.appspot.com/render/http://my.domain/%3Fpage%3Dhome
该服务试图通过查看页面加载事件来检测页面何时加载,以确保没有出色的网络请求,并且该页面有足够的时间渲染时间。
渲染的硬限量为10秒。确保您不要在预算到期之前确保申请良好来达到预算。
无头镀铬支持Web组件,但阴影DOM难以有效地序列化。因此,Web组件需要Shady Dom(阴影DOM的轻质垫片)。
如果您使用的是Web组件V0(已弃用),则需要启用Shady Dom才能正确渲染。在使用Web组件V0的Polymer 1.X中,默认情况下启用了Shady DOM。如果您使用的是Shadow dom,请在将请求引入RenderTron服务时通过设置查询参数dom=shady来覆盖此问题。
如果您使用的是Web组件V1和webcomponents-lite.js或webcomponents-loader.js ,请在将请求引入RenderTron Service时设置查询参数wc-inject-shadydom=true 。此渲染器服务将迫使要加载和启用必要的多填充物。
保留了最初请求的URL的状态代码。如果是200或304,则可以通过添加元标记来设置渲染服务返回的HTTP状态。
< meta name =" render:status_code " content =" 404 " /> 要安装RenderTron并在本地运行,请首先安装RenderTron:
npm install -g rendertron安装在机器上的镀铬后,运行Rendertron CLI:
rendertron克隆并安装依赖项:
git clone https://github.com/GoogleChrome/rendertron.git
cd rendertron
npm install
npm run build安装了Chrome的本地实例,您可以在本地启动服务器:
npm run start gcloud app deploy app.yaml --project <your-project-id>
Rendertron不再包含Docker文件。相反,请参阅有关如何在Docker中部署运行无头铬的Puppeteer文档。
部署服务时,通过在根中包括config.json来设置配置变量。可用配置选项:
timeout默认值10000设置用于渲染目标页面的超时。port默认3000设置用于运行和侦听RenderTron服务的端口。请注意,如果设置了Process.env.Port,则将使用它。host默认为0.0.0.0设置用于运行和侦听RenderTron服务的主机名。请注意,如果设置了Process.env. -Host,则将使用它。width默认为1000设置用于渲染页面的宽度(分辨率)。height默认1000设置用于渲染页面的高度(分辨率)。reqHeaders默认值{} - 设置每个请求时要发送到目标页面的其他HTTP标头。cache默认为null设置为datastore以启用Google Cloud上的缓存,仅在部署到Google Cloud时才使用DataStore, memory ,启用内存中的缓存或filesystem以启用基于磁盘的缓存cacheConfig一个用于指定缓存选项的对象数组renderOnly将端点限制在某些域的服务请求中。指定为一系列字符串。例如。 ['http://render.only.this.domain'] 。这是一个严格的前缀匹配,因此请确保您指定将要使用的确切协议(例如HTTP,HTTPS)。closeBrowser默认false - true迫使浏览器在每个页面之间关闭和重新打开,某些站点可能需要此浏览器以防止URL超越第一个渲染的返回零响应。restrictedUrlPattern违约默认值null设置限制性限制以限制给定的正则匹配的请求。 cacheDurationMinutes默认值1440将过期时间设置为微小的时间,默认值为24小时。设置为-1以禁用缓存到期cacheMaxEntries默认值100设置所选缓存方法中存储的最大条目数。设置为-1以允许无限的缓存。如果使用数据存储缓存方法,则将此值设置为1000以上可能会导致性能退化,因为确定缓存大小的查询可能太慢了。如果要允许datastore中的较大缓存,请考虑将其设置为-1 ,并使用类似此类删除条目的方法来管理数据存储的大小snapshotDir默认<your os's default tmp dir>/renderton文件系统仅将rendertron缓存文件目录存储在目录中一个示例配置文件指定内存缓存,有2小时到期,最多50个条目
{
"cache" : "memory" ,
"cacheConfig" : {
"cacheDurationMinutes" : 120 ,
"cacheMaxEntries" : 50
}
}如果您在使无头铬在环境中运行时遇到麻烦,请参阅《伪造者的故障排除指南》。