Eigenes CDN in einfach?

  • Moin,


    wir haben eine große Homepage bei einem recht guten Hoster, welcher uns aber dennoch bei größeren Massenaufrufen Limitiert.


    Ich möchte jetzt die Bilder auf einen vorhandenen VServer auslagern, also im Prinzip ist die URL Änderung der statischen Dateien auf dem Webhost kein Problem, ich kann also einfach Statische Dateien ab jetzt auf eine Subdomain umschreiben.


    Möglichkeiten:


    1. ich synce die Dateien mit rsync oder ftp.. Nachteil, neue Dateien werden eventuell zu spät erkannt.


    2. Ich habe mir Varnish angeschaut, das scheint es schon ungefähr zu treffen, beisst sich aber mit nginx mit der vorhandene ISPConfig Version.


    3. Eigene Idee: Wenn die URL auf dem Static Host ein 404 generieren würde, die url per htaccess Conditipon an ein "Fetch-Script" übergeben und das erste mal Eine Weiterleitung zur Originalen Datei. (könnte klappen, muss mich aber noch einlesen)


    Fällt da jemandem noch etwas ein ob und wie das klappen könnte?


    Theoretisch kann man das auch irgendwie proggen mit irgendeinem server, aber welchem? in einigen Programmiersprachen wäre das ein 10 Zeiler, aber die Performance wäre ja nicht so prall.


    Request -> Cache?Fetch:Cache

  • Mit welchem System wird die Website denn bisher verwaltet bzw. betrieben? Also wie landen wie statischen Dateien überhaupt erstmalig am Server? Vielleicht kann man dort schon (besser) ansetzen.

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

    Einmal editiert, zuletzt von KB19 () aus folgendem Grund: s/betreiben/betrieben/

  • nginx kann das auch.


    https://docs.nginx.com/nginx/admin-guide/content-cache/content-caching/

  • Danke schonmal für die Antworten,


    der VServer läuft mit ISP-Config+Apache.


    intern keine Frage.. aber so?


    1. http://www.example.com (normales Webhosting) macht bei allen Bildern ein static.example.com aus dem Pfad.

    2. static.example.com ist ein Server in einem anderen Rechenzentrum.

    3. der static Server soll jetzt bei einen "Datei nicht vorhanden" auf z.B. static.example.com/bilder/hund.jpg die Datei von www.example.com/bilder/hund.jpg abholen.


    EDIT: Ja okay, nginx könnte bei nicht vorhanden die Bilder URL auf eine externe domain weiterleiten und über die access.logs könnte man die Files mit 301 in den cache holen..

  • der VServer läuft mit ISP-Config+Apache.

    Das meinte ich nicht. Die (neuen) Dateien müssen ja irgendwie am Server landen, wahrscheinlich durch einen Menschen. Was verwendet der User dabei, welche Software bedient er? Welches Frontend/Backend ist im Spiel?


    Beispiel: Wenn z.B. ein Wordpress läuft, könnte man direkt dort ansetzen. Wenn hingegen irgendein Static Site Generator verwendet wird, gibt es wieder andere Möglichkeiten.

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

    Gefällt mir 1
  • Das meinte ich nicht.

    .......

    Beispiel: Wenn z.B. ein Wordpress läuft, könnte man direkt dort ansetzen.

    Achso ja stimmt,es ist Wordpress.


    Ich habe bei WpSuperCache die möglichkeit eine CDN Domain auf Static Patterns anzugeben, so bin ich auf die Idee gekommen. Klar, vielleicht gibt es ein Addon das die Dateien doppelt pusht, bzw. da beim Hochladen ein Script startet.


    Gruß

  • Kommt auf dein Ziel an.


    Statische Ressourcen:

    Statische Dateien entweder über ein echtes CDN verteilen, oder einen Cloud Storage entsprechend auf der Welt verteilen und dort statische Ressourcen ablegen.


    Willst du Requests cachen kommt es ein bisschen auf deine Architektur an. Man schaltet REST APIs gerne ein API Management vor und lässt dieses den Cache (oft mit Redis abgebildet) verwalten.


    Wilde These: Hast du viele Aufrufe auf "wenig" Content, so lohnen sich eher CDN Dienste. Je nach Dienst zahlst du dort primär für die abgelegte Datenmenge anstatt Traffic, und du brauchst je nach CDN vergleichsweise wenig Einarbeitungszeit.

  • Die Caches von NGINX und Apache haben zwei gravierende Nachteile: Man kann nicht punktuell purgen (beim kostenpflichtigen NGINX geht das offenbar). Will sagen, wenn ich z.B. nur den Content unter dem Endpoint "example.org/blah" oder eine bestimmte Datei aus dem Cache haben möchte, geht dies nicht...


    Vor Jahren habe ich mal mit lsof & Co. getrackt, wohin Apache meine Datei in den Cache schreibt... aber das war eine Performance-Hölle.

  • Zitat

    3. Eigene Idee: Wenn die URL auf dem Static Host ein 404 generieren würde, die url per htaccess Conditipon an ein "Fetch-Script" übergeben und das erste mal Eine Weiterleitung zur Originalen Datei. (könnte klappen, muss mich aber noch einlesen)

    Sowas haben wir vor kurzem erst für einen Kunden umgesetzt, dieser wollte aus Kostengründen, dass Dateien(Bilder und Videos) von Wordpress, die älter als 1 Jahr sind, auf einen externen Server ausgelagert werden. Dies hat sich mit den vorhandenen Modulen und Einstellmöglichkeiten von Apache umsetzen lassen.

    Die Logik war folgende:

    Bild/Video/Datei lokal im Docroot vorhanden --> liefere dieses aus

    Bild/Video/Datei lokal im Docroot nicht vorhanden --> Reverse Proxy auf einen externen/zusätzlichen Server, der das Docroot ident konfiguriert hat und den aufgerufenen Pfad ausliefert.

    Die Logik hatten wir mit ein paar Anpassungen von einem Beispiel auf https://httpd.apache.org/docs/2.4/ übernommen.

  • Sowas haben wir vor kurzem erst für einen Kunden umgesetzt, dieser wollte aus Kostengründen, dass Dateien(Bilder und Videos) von Wordpress, die älter als 1 Jahr sind, auf einen externen Server ausgelagert werden. Dies hat sich mit den vorhandenen Modulen und Einstellmöglichkeiten von Apache umsetzen lassen.

    Die Logik war folgende:

    Bild/Video/Datei lokal im Docroot vorhanden --> liefere dieses aus

    Bild/Video/Datei lokal im Docroot nicht vorhanden --> Reverse Proxy auf einen externen/zusätzlichen Server, der das Docroot ident konfiguriert hat und den aufgerufenen Pfad ausliefert.

    Die Logik hatten wir mit ein paar Anpassungen von einem Beispiel auf https://httpd.apache.org/docs/2.4/ übernommen.

    Wie läuft die Kombination, wenn etwas nicht gefunden wird?

    Code
    ProxyPass /sample http://localhost:8080/sample

    Das wäre sehr brauchbar um z.B. Bilder die noch nicht in der richtigen Größe exisitieren on the fly zu generieren.