このプロジェクトは廃止されていることに注意してください。動的なレンダリングは推奨されるアプローチではなく、ウェブ上でレンダリングするためのより良いアプローチがあります。
Rendertronは、この時点で積極的に維持されません。
Rendertronは、その場でWebページをレンダリングおよびシリアル化するように設計されたヘッドレスChromeレンダリングソリューションです。
Rendertronは、プログレッシブ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 botentionキャッシュレンダリング結果を無視し、要求をまだキャッシュされていないかのように扱います。新しいレンダリング結果は、以前の結果を置き換えるために使用されます。 GET /screenshot/<url>
POST /screenshot/<url>
screenshotエンドポイントを使用して、ページが正しくレンダリングされていることを確認できます。
両方のエンドポイントは、次のクエリパラメーターをサポートしています。
widthデフォルトは1000です - ビューポート幅を指定します。heightデフォルトは1000です - ビューポートの高さを指定します。mobileデフォルトはfalseです。アクセスして?mobileサイトのモバイルバージョンをリクエストすることで有効にします。timezoneId -TimeZoneのレンダリングを指定します。追加のオプションは、 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秒の厳しい制限があります。予算が期限切れになる前に、申請がかなりのようにレンダリングされるようにすることにより、この予算を達成しないようにしてください。
Headless ChromeはWebコンポーネントをサポートしていますが、Shadow Domは効果的にシリアル化することは困難です。そのため、WebコンポーネントにはShady Dom(Shadow 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サービスにリクエストを向けるときにクエリパラメーターwc-inject-shadydom=true設定します。このレンダラーサービスは、必要なポリフィルを強制的にロードして有効にします。
最初の要求されたURLからのステータスコードは保存されています。これが200または304の場合、メタタグを追加してレンダリングサービスによって返されるHTTPステータスを設定できます。
< meta name =" render:status_code " content =" 404 " /> RenderTronをインストールしてローカルに実行するには、最初にRenderTronをインストールします。
npm install -g rendertronマシンにChromeをインストールした状態でRenderTron CLIを実行します。
rendertron依存関係のクローンとインストール:
git clone https://github.com/GoogleChrome/rendertron.git
cd rendertron
npm install
npm run buildChromeのローカルインスタンスがインストールされていると、サーバーをローカルに起動できます。
npm run start gcloud app deploy app.yaml --project <your-project-id>
RendertronはDockerファイルを含めなくなりました。代わりに、DockerにRun Headless Chromeを展開する方法に関する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 default {} - リクエストごとにターゲットページに送信される追加のHTTPヘッダーを設定します。cacheデフォルトnull datastoreに設定してGoogleクラウドを使用してGoogleクラウドでのキャッシュを有効にして、 Googleクラウドに展開する場合にのみ使用して、 memory内キャッシュまたはfilesystemを有効にしてディスクベースのキャッシュを有効にしますcacheConfigキャッシュオプションを指定するオブジェクト配列renderOnly特定のドメインのサービス要求のみにエンドポイントを制限します。文字列の配列として指定されています。例えば。 ['http://render.only.this.domain'] 。これは厳密なプレフィックスマッチであるため、使用される正確なプロトコル(HTTP、HTTPSなど)を指定してください。closeBrowserデフォルトのfalse trueは、各ページレンダリング間でブラウザーを閉じて再開するように強制します。一部のサイトでは、最初のレンダリングを介してURLがヌル応答を返すのを防ぐためにこれが必要になる場合があります。restrictedUrlPatternデフォルトnull -recritedurlpatternを設定します。 cacheDurationMinutesデフォルト1440有効期限をminuesで設定し、デフォルトは24時間になります。キャッシュの有効期限を無効にするために-1に設定しますcacheMaxEntriesデフォルト100選択したキャッシュ法に保存されているエントリの最大数を設定します。無制限のキャッシュを可能にするために-1に設定します。 DataStoreキャッシング方法を使用している場合、この値を1000を超えると、クエリがキャッシュのサイズを決定するためにパフォーマンスが低下する可能性がある場合があります。 datastoreでより大きなキャッシュを許可する場合は、これを-1に設定し、このようなメソッドを使用してDataStoreのサイズを管理することを検討してください。snapshotDirデフォルト<your os's default tmp dir>/rendertonファイルシステムディレクトリのみrendertronキャッシュファイルはで保存されますメモリキャッシュを指定し、2時間の有効期限があり、最大50のエントリを指定した構成ファイルの例
{
"cache" : "memory" ,
"cacheConfig" : {
"cacheDurationMinutes" : 120 ,
"cacheMaxEntries" : 50
}
}ヘッドレスクロムを環境で実行するのに問題がある場合は、操り人形師のトラブルシューティングガイドを参照してください。