Fastly , CloudFlare und einige andere CDNs bieten einen Modus an, in dem sie dynamische Inhalte beschleunigen.
Im Grunde genommen leiten Sie die IP-Adresse Ihrer Domain auf das CDN um, und das CDN entscheidet intelligent, wie es mit der Anfrage umgehen soll.
- Statische Inhalte können problemlos aus dem Cache bereitgestellt werden
- Dynamische Inhalte können an die Seite weitergeleitet werden.
Dies bietet einige Vorteile gegenüber der reinen Bereitstellung statischer Assets, was im CDN-How-to behandelt wird.
- Sie können sich für „Shielding“ entscheiden, das Ihre Seite vor Trafficspitzen schützt.
- Dynamische Inhalte können mithilfe von Techniken wie Delta-Komprimierung beschleunigt werden. (Hinweis: Im Allgemeinen passt unsere Nutzlast in 1 RTT, sodass dies weniger Auswirkungen hat.)
- Die SSL-Aushandlung kann am Edge stattfinden, was teure Roundtrips für die Aushandlung einspart.
Wenn Sie die vollständige Seitenbeschleunigung mit einem CDN aktivieren, ist es von entscheidender Bedeutung, dass Sie 3 Regeln befolgen
-
Der „Message Bus“ muss vom Ursprungsserver bereitgestellt werden.
-
Sie müssen die X-Forwarded-For-Zustellung einrichten. Fügen Sie für Cloudflare
cloudflare.template.ymlzu Ihrerapp.yml-Datei hinzu. -
Seien Sie besonders vorsichtig bei Techniken, die eine Optimierung auf der Seite anwenden. Dinge wie Rocket Loader können Discourse außer Betrieb setzen. Discourse ist bereits stark optimiert, dies ist nicht notwendig.
Um „Long Polling“-Anfragen von einer anderen Domain aus bereitzustellen, setzen Sie die versteckte Website-Einstellung long_polling_base_url auf den Ursprungsserver. Dies lässt sich am besten konfigurieren, indem Sie die Umgebungsvariable DISCOURSE_LONG_POLLING_BASE_URL in Ihrer app.yml festlegen oder über die Rails-Konsole.
Wenn sich Ihre Seite beispielsweise unter „http://forum.example.com“ befindet, sollten Sie http://forum-direct.example.com/ einrichten, um sich mit der Website-Einstellung zu verbinden. Wenn Sie dies nicht tun, wird Ihre Seite fehlerhaft sein.
Wenn Sie Discourse über Varnish schalten, möchten Sie wahrscheinlich denselben Trick anwenden und die Anfragen des Message Bus an Varnish vorbeileiten.
Langweilige technische Hinweise:
Einen funktionierenden Message Bus auf einer komplett anderen Domain zu erreichen, ist ziemlich herausfordernd. Unser Message Bus weiß, welcher Benutzer abfragt, die andere Domain hat möglicherweise keinen Cookie eingerichtet, sodass im unveränderten Zustand zwei Probleme auftreten. Erstens können Sie nicht einmal Standard-Ajax-Anfragen domänenübergreifend ohne einen riesigen CORS-Tanz durchführen.
Zweitens benötigten wir einen Mechanismus, um die andere Domain darüber zu informieren, wer der Benutzer ist, damit wir die korrekten Informationen abfragen können.
Wenn die Long Polling Base URL geändert wird, versendet Discourse ein zusätzliches Meta-Tag, das ein „domänenübergreifendes“ Authentifizierungstoken teilt. Dieses Token wird über einen benutzerdefinierten Header zurück an den Message Bus übergeben. Das Token läuft nach 7 Tagen oder sobald sich der Benutzer abmeldet, ab.
Sie können den Großteil der Implementierung hier einsehen: FEATURE: allow long polling to go to a different url · discourse/discourse@aa9b3bb · GitHub

