Das heißt also, dass die Dateien nicht mit meinem System synchronisiert werden, sondern CloudFront sie lediglich zwischenspeichert. Liege ich richtig?
Ja, das ist korrekt. Das CDN bezieht von deiner Website nur die angeforderten Assets.
Discourse wird sowohl statische Assets (wie CSS und JavaScript) als auch Uploads an S3 übergeben.
Ist es möglich, Cloudflare-Regeln zu verwenden, um statische Assets wie CSS und JavaScript zu cachen?
Ja, wir nutzen es auf diese Weise und es funktioniert gut. Achten Sie jedoch unbedingt darauf, alle JavaScript-Optimierungen zu deaktivieren. Unser Setup finden Sie hier:
Vielen Dank für die Antwort.
Ich habe bereits die zweite und dritte Regel hinzugefügt, aber die erste Regel ist mir nicht klar. Wozu ist die 301-Weiterleitung nötig?
Du brauchst es nicht; es steht in der Beschreibung.
Danke für die Antwort. Wie sieht es mit statischen Assets wie CSS und JavaScript aus? Gibt es dafür eine Regel?
Das habe ich nicht getestet. Ich bin mir nicht sicher, ob das funktionieren würde. Zumindest müsstest du nach jedem Neuaufbau deinen Cloudflare-Cache leeren.
Für mich ist es in Ordnung, den Cache nach jedem Neuaufbau zu leeren. Was könnte sonst noch schiefgehen, wenn ich eine Regel aufstelle, um alles in https://myforum.com/assets/ zu cachen? Wird dies die Benutzeranmeldung beeinflussen? Wenn Sie grünes Licht geben, werde ich es eine Woche lang testen und berichten. Ich habe noch eine ungenutzte Regel.
Nur zur Klärung: Ist es korrekt, dass wir dieses Feld (sowie die CDN-URL) nicht verwenden, wenn wir Cloudflare CDN nutzen?
Ich habe cloudflare.template in app.yml gemäß der Dokumentation eingerichtet.
Ist bei der Nutzung von Cloudflare eine weitere Konfiguration erforderlich?
Ich habe StackPath gerade erfolgreich als CDN verwendet. Funktioniert wie erwartet!
Ist das heutzutage immer noch der Fall?
Aus dem Jahr 2019:
Es scheint, dass wir besonders vorsichtig sein müssen und einige der Vorteile von Cloudflare verlieren.
Aus dem Jahr 2020:
Aus dem Jahr 2021:
Ist Cloudflare also heute zuverlässig und effizient mit Discourse? Minimiert die Deaktivierung der Funktion „Rocket Loader“ die Vorteile?
Ich habe darüber nachgedacht, von Stackpath zu Bunny CDN zu wechseln, aber der Inhaber meiner Forendomäne und ehemalige Administrator hat ein Cloudflare Enterprise-Konto (er ist der Inhaber von tinyURL), zu dem er die Domäne kostenlos hinzufügen könnte (Looking for a decrease in the forum fees in the future - #6 by Gilby - Forum Feedback - Unicyclist.com).
Daher frage ich mich, ob es richtig, schmerzlos und effektiv ist, Cloudflare anstelle von Bunny CDN zu verwenden.
Wenn Sie viele Bilder haben, sind die Kosten für die direkte Anbringung von SSDs weitaus höher als die entsprechenden S3-Kosten.
S3 benötigt eine CDN davor, um kosteneffektiv zu sein, da Ihnen Ein- und Ausgang in Rechnung gestellt werden, aber es ist immer noch weitaus billiger, als einfach mehr schnelle SSDs anzubringen. Cloudflare kann S3 vorschalten, aber Asset-Caching ist wirklich die einzige Funktion, die Sie zuverlässig nutzen können. Wenn Sie Cloudflare zwischen dem Client und dem Anwendungsserver platzieren, erhöht sich auch die Anzahl der Hops und die Anwendungslatenz steigt. Es ist keine magische Lösung.
Wir sind nicht bildlastig. Das Ziel des CDN wäre, dass die Assets für jeden Benutzer schnell geladen werden, da unsere Community international ist (hauptsächlich USA und Europa).
Wir verwenden S3, aber nur zur Speicherung von Backups.
Kurze Frage. Ist ein erneutes Backen nach der Änderung unseres CDN obligatorisch? Oder nur, wenn sich die CDN-URL ändert? Oder wird es gar nicht benötigt?
Bearbeiten: Oder ist es einfach möglich, die alten URLs in den gebackenen Beiträgen mit einem Rails-Skript durch die neuen zu ersetzen?
Zum Beispiel, wenn ich einen Beitrag habe, der Folgendes enthält:
<img class="ytp-thumbnail-image"
src="https://f5i4i8k5.stackpathcdn.com/uploads/default/original/3X/f/3/f3bc5ab19cc0394f33fd008e90ca06e081886a0b.jpeg"
title="Riding a unicycle part 76: Sullivan Canyon - Los Angeles"
width="480"
height="360"
loading="lazy"
style="aspect-ratio: 480 / 360;">
Könnte ich eine Suche und Ersetzung von Zeichenfolgen von f5i4i8k5.stackpathcdn.com zu newcdn.unicyclist.com durchführen, ohne etwas zu beschädigen? Es scheint sicher zu sein, aber ich möchte sicher sein, was ich tue.
Es macht mir nichts aus, alle meine Beiträge erneut zu backen, aber das Problem, auf das ich beim ersten Mal gestoßen bin, ist, dass ich Tausende von eingebetteten YouTube-Videos habe und meine IP während des erneuten Backens von YouTube wegen zu vieler Anfragen an YouTube gesperrt wurde.
Wenn es also eine sichere Alternative zum erneuten Backen aller Beiträge gibt und ich mit demselben ärgerlichen Problem konfrontiert werde, würde ich es vorziehen, die Alternative zu wählen…
Es gibt eine Rake-Aufgabe, die eine Ersetzung durchführt. Ich denke, dass deren Ausführung sicher und eine gute Idee ist. Eine Zeichenkette in allen Beiträgen ersetzen ist das, wonach Sie suchen, denke ich.
Hallo Jay,
Ich bin mir nicht sicher, ob ich die Rake-Aufgabe verwenden soll.
Die CDN-URLs scheinen eher in den gekochten Feldern als in den rohen Feldern vorhanden zu sein (es sei denn, die Nachricht wurde per E-Mail gesendet).
Nach meinem Verständnis sucht post:remap nur im rohen Feld nach der Zeichenfolge.
Wenn das Ersetzen der CDN-URLs sowohl in den rohen als auch in den gekochten Feldern sicher ist, würde ich wohl ein benutzerdefiniertes Rails-Skript verwenden?
Sie haben Recht. Es gibt noch eine weitere . . . Sache . . ., die eine Zeichenkette in allen Feldern der Datenbank ersetzt. Das ist die, nach der Sie suchen. Entschuldigung, aber ich kann sie im Moment nicht finden. Es gibt einige Themen zum Verschieben von einem S3, aber es scheint kein howto zu geben.
Vielen Dank für diesen Hinweis!
Ich vermute, es ist das?
DbHelper.remap('from', 'to')
Gefunden auf Rebaking old posts won't pull new S3 CDN URL after S3 bucket rename - #10 by Brad_Wood
Und hier verwendet:
Wenn es eine sichere Alternative zu einem Rebake beim Wechsel unseres CDN-Dienstes ist, wäre eine #howto-Anleitung in der Tat nett.
Oh, Hurra. Danke, dass du es mich wissen lässt. Ich dachte, es würde dir reichen, um es zu finden. Schön, dass du es geschafft hast.