基於Headless chrome的高性能,通用服務器渲染,可在服務器中渲染任何SPA(瀏覽器中的渲染數據)以進行SEO或其餘優化。javascript
npm i chrome-render
ChromeRender
then use it to render
a web page, a ChromeRender
means a chrome.const ChromeRender = require('chrome-render');
// ChromeRender.new() return a Promise, you can use async function in this way:
// const chromeRender = await ChromeRender.new();
ChromeRender.new({}).then(async(chromeRender)=>{
const htmlString = await chromeRender.render({
url: 'http://qq.com',
});
});
複製代碼
一個
chromeRender
實例能夠調用render
多時間和併發的高頻率使用狀況。chromeRender
將一個選項卡池管理爲render
多頁併發。html
await chromeRender.destroyRender()
kill chrome add釋放全部資源。ChromeRender.new()
方法支持選項:maxTab
:number
max chrome chrome將打開以渲染頁面,默認值是無限制,maxTab
用於避免過多的chrome致使chrome崩潰。ChromeRender
將建立一個選項卡輪詢以重用選項卡,以提升性能並減小資源,由於chrome中的打開和關閉選項卡須要時間,例如數據庫鏈接輪詢。chromeRunnerOptions
:object
與chrome-runner的選項相同,能夠配置chrome的啓動選項,詳細信息請參閱chrome-runner的選項chromeRender.render()
方法支持選項:url
:string
是必填項,網頁的URLcookies
:object {cookieName:cookieValue}
是一個可選參數。在請求網頁時設置HTTP cookieheaders
:object {headerName:headerValue}
是一個可選參數。在請求網頁時添加HTTP標頭useReady
:boolean
是否window.isPageReady=1
已準備好用於通知chrome-render頁面。默認爲false chrome-render使用,domContentEventFired
由於頁面已準備就緒。script
:string
是一個可選參數。注入腳本源以評估頁面什麼時候加載renderTimeout
:number
以毫秒爲單位,render()
若是html字符串以後沒法解析,則會引起錯誤renderTimeout
,默認值爲5000ms。deviceMetricsOverride
:object
爲響應型網站覆蓋設備屏幕尺寸的值,詳細用法請參見此處clearTab
:boolean
若是true
渲染chrome實例以後將導航about:blank
到可用資源。默認值爲true
。設置爲false
渲染同一網站時可能會提升頁面加載速度。chrome-render的全部請求都將帶有HTTP標頭
x-chrome-render:${version}
學習下來 受益不淺java
手動艾特做者 @浩麟 大佬git