Harap dicatat bahwa proyek ini sudah usang . Render dinamis bukanlah pendekatan yang direkomendasikan dan ada pendekatan yang lebih baik untuk rendering di web.
Rendertron tidak akan dipertahankan secara aktif pada saat ini.
Rendertron adalah solusi rendering krom tanpa kepala yang dirancang untuk merender & serialisa halaman web dengan cepat.
Rendertron dirancang untuk mengaktifkan aplikasi web progresif Anda (PWA) Anda untuk melayani konten yang benar ke bot apa pun yang tidak membuat atau menjalankan JavaScript. Rendertron berjalan sebagai server HTTP mandiri. Rendertron Render yang diminta halaman menggunakan Chrome tanpa kepala, pendeteksian otomatis ketika PWA Anda telah menyelesaikan pemuatan dan membuat serial respons kembali ke permintaan asli. Untuk menggunakan Rendertron, aplikasi Anda mengkonfigurasi middleware untuk menentukan apakah akan proxy permintaan untuk Rendertron. Rendertron kompatibel dengan semua teknologi sisi klien, termasuk komponen web.
Setelah Anda menjalankan dan menjalankan layanan, Anda harus mengimplementasikan lapisan penyajian diferensial. Ini memeriksa agen pengguna untuk menentukan apakah prerendering diperlukan.
Ini adalah daftar middleware yang tersedia untuk digunakan dengan layanan rendertron:
Rendertron juga kompatibel dengan prerender.io middleware. Catatan: Daftar agen pengguna berbeda di sana.
GET /render/<url>
Titik akhir render akan membuat halaman Anda dan membuat serial halaman Anda. Opsi ditentukan sebagai parameter kueri:
mobile ke false . Aktifkan dengan melewati ?mobile untuk meminta versi seluler situs Anda.refreshCache : Pass refreshCache=true untuk mengabaikan hasil render yang berpotensi di -cache dan perlakukan permintaan seolah -olah belum di -cache. Hasil render baru digunakan untuk menggantikan hasil sebelumnya. GET /screenshot/<url>
POST /screenshot/<url>
Titik akhir screenshot dapat digunakan untuk memverifikasi bahwa halaman Anda render dengan benar.
Kedua titik akhir mendukung parameter kueri berikut:
width ke 1000 - Menentukan lebar viewport.height ke 1000 - Menentukan tinggi viewport.mobile ke false . Aktifkan dengan melewati ?mobile untuk meminta versi seluler situs Anda.timezoneId - Menentukan rendering untuk TimeZone. Opsi tambahan tersedia sebagai string JSON di badan POST . Lihat Dokumentasi Puppeteer untuk opsi yang tersedia. Anda tidak dapat menentukan type (default ke jpeg ) dan parameter encoding (default ke binary ).
GET /invalidate/<url>
Titik akhir invalidate akan menghapus cache yang dimasukkan untuk <url> dari cache yang dikonfigurasi (in-memory, filesystem atau cloud datastore).
Saat mengatur parameter kueri sebagai bagian dari URL Anda, pastikan mereka dikodekan dengan benar. Di JS, ini akan menjadi encodeURIComponent(myURLWithParams) . Misalnya untuk menentukan page=home :
https://render-tron.appspot.com/render/http://my.domain/%3Fpage%3Dhome
Layanan berupaya mendeteksi kapan halaman telah dimuat dengan melihat acara pemuatan halaman, memastikan tidak ada permintaan jaringan yang luar biasa dan bahwa halaman tersebut memiliki banyak waktu untuk diterjemahkan.
Ada batas keras 10 detik untuk rendering. Pastikan Anda tidak mencapai anggaran ini dengan memastikan aplikasi Anda diberikan jauh sebelum anggaran berakhir.
Headless Chrome mendukung komponen web tetapi Shadow Dom sulit untuk membuat serialisasi secara efektif. Dengan demikian, dom teduh (shim ringan untuk shadow dom) diperlukan untuk komponen web.
Jika Anda menggunakan komponen web V0 (sudah usang), Anda harus mengaktifkan dom teduh untuk diterjemahkan dengan benar. Dalam Polymer 1.x, yang menggunakan komponen web V0, dom teduh diaktifkan secara default. Jika Anda menggunakan Shadow Dom, angkanya dengan mengatur parameter kueri dom=shady saat mengarahkan permintaan ke layanan RenderTron.
Jika Anda menggunakan komponen web V1 dan baik webcomponents-lite.js atau webcomponents-loader.js , atur parameter kueri wc-inject-shadydom=true saat mengarahkan permintaan ke layanan rendertron. Layanan renderer ini akan memaksa polyfill yang diperlukan untuk dimuat dan diaktifkan.
Kode status dari URL awal yang diminta dipertahankan. Jika ini 200, atau 304, Anda dapat mengatur status HTTP yang dikembalikan oleh layanan rendering dengan menambahkan tag meta.
< meta name =" render:status_code " content =" 404 " /> Untuk menginstal Rendertron dan menjalankannya secara lokal, pertama -tama instal Rendertron:
npm install -g rendertronDengan Chrome terpasang di mesin Anda, jalankan Rendertron CLI:
rendertronKlon dan instal dependensi:
git clone https://github.com/GoogleChrome/rendertron.git
cd rendertron
npm install
npm run buildDengan instance lokal Chrome terpasang, Anda dapat memulai server secara lokal:
npm run start gcloud app deploy app.yaml --project <your-project-id>
Rendertron tidak lagi menyertakan file Docker. Sebaliknya, lihat dokumentasi dalang tentang cara menggunakan Chrome tanpa kepala di Docker.
Saat menggunakan layanan, atur variabel konfigurasi dengan memasukkan config.json di root. Opsi konfigurasi yang tersedia:
timeout Default 10000 - Setel timeout yang digunakan untuk membuat halaman target.port Default 3000 - Atur port yang akan digunakan untuk menjalankan dan mendengarkan layanan Rendertron. CATATAN Jika proses.env.port diatur, itu akan digunakan sebagai gantinya.host default 0.0.0.0 - Tetapkan nama host yang akan digunakan untuk menjalankan dan mendengarkan layanan rendertron. CATATAN Jika proses.env.host diatur, itu akan digunakan sebagai gantinya.width Default 1000 - Atur lebar (resolusi) untuk digunakan untuk merender halaman.height Default 1000 - Atur ketinggian (resolusi) yang akan digunakan untuk membuat halaman.reqHeaders default {} - Atur header HTTP tambahan untuk dikirim ke halaman target dengan setiap permintaan.cache default null - diatur ke datastore untuk mengaktifkan caching di google cloud menggunakan datastore hanya menggunakan jika digunakan ke google cloud , memory untuk mengaktifkan caching in -memory atau filesystem untuk mengaktifkan caching berbasis diskcacheConfig - Array objek untuk menentukan opsi cachingrenderOnly - Batasi titik akhir hanya untuk permintaan layanan untuk domain tertentu. Ditentukan sebagai array string. misalnya. ['http://render.only.this.domain'] . Ini adalah kecocokan awalan yang ketat, jadi pastikan Anda menentukan protokol yang tepat yang akan digunakan (mis. Http, https).closeBrowser Default false - true memaksa browser untuk menutup dan membuka kembali antara setiap halaman render, beberapa situs mungkin memerlukan ini untuk mencegah URL melewati yang pertama memberikan respons nol yang kembali.null restrictedUrlPattern - Atur batasurturlpattern untuk membatasi permintaan yang cocok dengan pola regex. cacheDurationMinutes Default 1440 - Tetapkan waktu kedaluwarsa di Minues, default hingga 24 jam. Diatur ke -1 untuk menonaktifkan kedaluwarsa cachecacheMaxEntries Default 100 - Tetapkan jumlah maksimum entri yang disimpan dalam metode cache yang dipilih. Diatur ke -1 untuk memungkinkan caching tanpa batas. Jika menggunakan metode caching datastore, mengatur nilai ini lebih dari 1000 dapat menyebabkan kinerja yang terdegradasi sebagai kueri untuk menentukan ukuran cache mungkin terlalu lambat. Jika Anda ingin mengizinkan cache yang lebih besar di datastore pertimbangkan untuk mengatur ini ke -1 dan mengelola ukuran datastore Anda menggunakan metode seperti ini menghapus entri dalam jumlah besarsnapshotDir Default <your os's default tmp dir>/renderton - FileSystem Hanya Direktori File Cache Rendertron yang akan disimpan di Contoh file konfigurasi yang menentukan cache memori, dengan kedaluwarsa 2 jam, dan maksimum 50 entri
{
"cache" : "memory" ,
"cacheConfig" : {
"cacheDurationMinutes" : 120 ,
"cacheMaxEntries" : 50
}
}Jika Anda mengalami masalah dengan mendapatkan Chrome tanpa kepala untuk dijalankan di lingkungan Anda, lihat panduan pemecahan masalah untuk dalang.