Bitte beachten Sie, dass dieses Projekt veraltet ist. Das dynamische Rendering ist kein empfohlener Ansatz und es gibt bessere Ansätze für das Rendern im Internet.
Rendertron wird zu diesem Zeitpunkt nicht aktiv aufrechterhalten.
Rendertron ist eine kopflose Chrom -Rendering -Lösung, die für die Rendere und Serialität von Webseiten im laufenden Flug entwickelt wurde.
Rendertron wurde entwickelt, damit Ihre progressive Web -App (PWA) den richtigen Inhalt für jeden Bot bedienen kann, der JavaScript nicht rendert oder ausführt. Rendertron wird als eigenständiger HTTP -Server ausgeführt. Rendertron Renders forderte Seiten mit Kopflosen Chrom und automatisch erkennen, wenn Ihre PWA das Laden abgeschlossen hat, und die Antwort auf die ursprüngliche Anfrage serialisiert. Um Rendertron zu verwenden, konfiguriert Ihre Anwendung Middleware, um festzustellen, ob eine Anfrage zum Rendertron vorgestellt werden soll. Rendertron ist mit allen Client -Seitentechnologien, einschließlich Webkomponenten, kompatibel.
Sobald Sie den Service in Betrieb genommen haben, müssen Sie die Differential -Servierschicht implementieren. Dies überprüft den Benutzeragenten, um festzustellen, ob Vorbereitung erforderlich ist.
Dies ist eine Liste von Middleware, die mit dem Rendertron -Dienst verwendet werden können:
Rendertron ist auch mit prerender.io Middleware kompatibel. HINWEIS: Dort unterscheiden sich die Benutzervertreterlisten.
GET /render/<url>
Der render wird Ihre Seite rendern und Ihre Seite serialisieren. Optionen werden als Abfrageparameter angegeben:
mobile Standardeinstellungen zu false . Aktivieren Sie durch Übergeben ?mobile , um die mobile Version Ihrer Website anzufordern.refreshCache : Pass refreshCache=true , um potenziell zwischengespeicherte Renderergebnisse zu ignorieren und die Anforderung zu behandeln, als ob sie noch nicht zwischengespeichert wäre. Das neue Renderergebnis wird verwendet, um das vorherige Ergebnis zu ersetzen. GET /screenshot/<url>
POST /screenshot/<url>
Der screenshot -Endpunkt kann verwendet werden, um zu überprüfen, ob Ihre Seite korrekt rendert.
Beide Endpunkte unterstützen die folgenden Abfrageparameter:
width standardmäßig 1000 - Gibt die Ansichtsfensterbreite an.height auf 1000 - Gibt die Höhe der Ansichtsfenster an.mobile Standardeinstellungen zu false . Aktivieren Sie durch Übergeben ?mobile , um die mobile Version Ihrer Website anzufordern.timezoneId - Gibt das Rendering für TimeZone an. Zusätzliche Optionen sind als JSON -Zeichenfolge in der POST erhältlich. Weitere Optionen finden Sie unter Puppeteer -Dokumentation. Sie können den type (Standardeinstellungen zu jpeg ) und encoding (Standards zu binary ) Parametern nicht angeben.
GET /invalidate/<url>
Der invalidate Endpunkt entfernen Cache, das für <url> aus dem konfigurierten Cache (In-Memory-, Dateisystem oder Cloud-Datenspeicher) eingeleitet wird.
Stellen Sie beim Einstellen von Abfrageparametern als Teil Ihrer URL sicher, dass sie korrekt codiert werden. In JS wäre dies encodeURIComponent(myURLWithParams) . Zum Beispiel, um page=home anzugeben:
https://render-tron.appspot.com/render/http://my.domain/%3Fpage%3Dhome
Der Service versucht zu erkennen, wann eine Seite geladen wurde, indem Sie sich das Seitenladereignis ansehen, um sicherzustellen, dass es keine ausstehenden Netzwerkanfragen gibt und dass die Seite ausreichend Zeit zum Rendern hatte.
Es gibt eine harte Grenze von 10 Sekunden für das Rendering. Stellen Sie sicher, dass Sie dieses Budget nicht erreichen, indem Sie sicherstellen, dass Ihre Bewerbung weit vor Ablauf des Budgets gerendert wird.
Headless Chrome unterstützt Webkomponenten, aber Shadow Dom ist schwierig, effektiv zu serialisieren. Daher ist schattiges DOM (ein leichtes Shim für Shadow DOM) für Webkomponenten erforderlich.
Wenn Sie Webkomponenten v0 (veraltet) verwenden, müssen Sie das schattige DOM ermöglichen, korrekt zu rendern. In Polymer 1.x, das Webkomponenten V0 verwendet, ist Shady DOM standardmäßig aktiviert. Wenn Sie Shadow DOM verwenden, überschreiben Sie dies, indem Sie den Abfrageparameter dom=shady einstellen, wenn Anforderungen an den Rendertron -Dienst geleitet werden.
Wenn Sie Webkomponenten v1 und webcomponents-lite.js oder webcomponents-loader.js verwenden, legen Sie den Abfrageparameter wc-inject-shadydom=true fest, wenn Sie Anforderungen an den Rendertron-Dienst leiten. Dieser Renderer -Service erzwingt die erforderlichen Polyfills, die geladen und aktiviert werden sollen.
Statuscodes aus der ursprünglichen angeforderten URL bleiben erhalten. Wenn dies ein 200 oder 304 ist, können Sie den HTTP -Status festlegen, der vom Rendering -Service zurückgegeben wird, indem Sie ein Meta -Tag hinzufügen.
< meta name =" render:status_code " content =" 404 " /> Um Rendertron zu installieren und lokal auszuführen, installieren Sie zuerst Rendertron:
npm install -g rendertronFühren Sie die Rendertron CLI aus: Chrome auf Ihrem Computer installiert:
rendertronKlonen und Installieren von Abhängigkeiten:
git clone https://github.com/GoogleChrome/rendertron.git
cd rendertron
npm install
npm run buildMit einer lokalen Instanz von Chrome installiert können Sie den Server lokal starten:
npm run start gcloud app deploy app.yaml --project <your-project-id>
Rendertron enthält keine Docker -Datei mehr. Siehe stattdessen in der Puppeter -Dokumentation zum Bereitstellen von ausgeführten Kopflosen Chrom in Docker.
Stellen Sie beim Bereitstellen des Dienstes Konfigurationsvariablen fest, indem Sie eine config.json in das Stamm einbeziehen. Verfügbare Konfigurationsoptionen:
timeout Standard 10000 - Legen Sie die Zeitüberschreitung fest, mit der die Zielseite gerendert wird.port Standard 3000 - Stellen Sie den Port so ein, dass der Rendertron -Dienst ausgeführt und anhört. Beachten Sie, ob process.env.port festgelegt ist, es wird stattdessen verwendet.host Default 0.0.0.0 - Stellen Sie den Hostnamen für das Ausführen und Anhören des Rendertron -Dienstes fest. Beachten Sie, ob process.env.host eingestellt ist, es wird stattdessen verwendet.width Standard 1000 - Legen Sie die Breite (Auflösung) fest, um die Seite zu rendern.height Standard 1000 - Stellen Sie die Höhe (Auflösung) fest, die zum Rendern der Seite verwendet werden soll.reqHeaders Standard {} - Stellen Sie die zusätzlichen HTTP -Headers fest, die mit jeder Anfrage an die Zielseite gesendet werden sollen.cache null - Setzen Sie auf datastore , um das Caching in Google Cloud mit dem DataStore nur bei der Bereitstellung in Google Cloud zu aktivieren, memory das In -Memory -Caching oder filesystem zum Aktivieren von Disk -basierten Caching zu aktivierencacheConfig - Ein Objektarray zum Angeben von Caching -OptionenrenderOnly - Begrenzen Sie den Endpunkt nur auf Serviceanfragen für bestimmte Domänen. Als eine Reihe von Saiten angegeben. z.B. ['http://render.only.this.domain'] . Dies ist eine strenge Präfixübereinstimmung. Stellen Sie daher sicher, dass Sie die genauen Protokolle angeben, die verwendet werden (z. B. HTTP, HTTPS).closeBrowser Standard false - true zwingt den Browser zum Schließen und Wiedereröffnen zwischen den einzelnen Seiten -Rendern. Einige Websites müssen möglicherweise URLs an der ersten Rendite -Reaktionen verhindern.restrictedUrlPattern null - setzen Sie die eingeschränkte Erklärung, um die Anfragen zu beschränken, die angegeben sind, angegebenes Regex -Muster. cacheDurationMinutes Standard 1440 - Legen Sie eine Ablaufzeit in Minues fest, standardmäßig auf 24 Stunden. Legen Sie auf -1 ein, um den Cache -Ablauf zu deaktivierencacheMaxEntries Standard 100 - Stellen Sie die maximale Anzahl der in der ausgewählten Cache -Methode gespeicherten Einträge ein. Setzen Sie auf -1 um unbegrenztes Zwischenspeichern zu ermöglichen. Wenn die Verwendung der Datenspeicher -Caching -Methode verwendet wird, kann das Festlegen dieses Wertes über 1000 zu einer abgebauten Leistung führen, da die Abfrage zur Bestimmung der Größe des Cache zu langsam sein kann. Wenn Sie einen größeren Cache im datastore zulassen möchten, sollten Sie dies auf -1 einstellen und die Größe Ihres Datenspeichers mithilfe einer Methode wie dieser Löschung in Bulk verwaltensnapshotDir Standard <your os's default tmp dir>/renderton - Dateisystem Nur das Verzeichnis Die Rendertron -Cache -Dateien werden in gespeichertem Verzeichnis gespeichert Eine Beispiel -Konfigurationsdatei, die einen Speichercache mit einem Ablauf von 2 Stunden und maximal 50 Einträge angibt
{
"cache" : "memory" ,
"cacheConfig" : {
"cacheDurationMinutes" : 120 ,
"cacheMaxEntries" : 50
}
}Wenn Sie Probleme haben, Kopfloses Chrom in Ihrer Umgebung zu leiten, finden Sie in der Fehlerbehebung für Puppenspieler.