Ich verwende prerender.io, um die Version der Website “application/JS” für Crawler bereitzustellen (meine Instanz stellt Crawlern die JS-Version über eine versteckte Einstellung bereit).
Es funktioniert gut, aber es scheint, dass Discourse in diese Kategorie fallen könnte …
aber einige Webseiten verwenden benutzerdefinierte Ladeflüsse oder ständiges Polling, die die Logik von Prerender täuschen können; daher kann es keine Entscheidung über die Bereitschaft der Seite treffen.
Wenn Prerender zum ersten Mal auf eine Discourse-URL zugreift, wird ein Timeout ausgelöst (20 Sekunden, wie von Prerender eingestellt).
Die Seite wird korrekt gerendert, aber Prerender.io weiß nicht, dass die Seite vollständig geladen ist, und versucht daher, die Seite zu rendern, bis die 20 Sekunden abgelaufen sind, und liefert dann die HTML-Version.
Wenn der Crawler die Seite erneut anfordert, wird die Seite in 1 Sekunde (mehr oder weniger) geliefert – da eine HTML-Version der URL im Cache vorhanden ist.
… aber das ist nicht praktikabel, da es Tausende von URLs gibt und 20 Sekunden für jede URL (beim ersten Zugriff) nicht funktionieren.
Daher benötige ich das Folgende, das direkt nach dem <head>-Tag hinzugefügt wird (und wenn die Seite fertig ist, wird die Variable auf true gesetzt):
<script> window.prerenderReady = false; </script>
Ich möchte, dass dies seitenweit funktioniert – hoffentlich erleichtert das die Arbeit.
Ich bin mir nicht sicher, was das bedeutet, aber wenn ich falsch liege, lassen Sie es mich bitte wissen – 300 ? 400 ?