請注意,該項目已棄用。動態渲染不是推薦的方法,並且有更好的方法可以在網絡上渲染。
在這一點上,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
}
}如果您在使無頭鉻在環境中運行時遇到麻煩,請參閱《偽造者的故障排除指南》。