Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Auf der Suche nach der besten Caching-Lösung (https://www.delphipraxis.net/83779-auf-der-suche-nach-der-besten-caching-loesung.html)

Meflin 6. Jan 2007 11:23


Auf der Suche nach der besten Caching-Lösung
 
Moin!

Als kleinen (mehr oder weniger, eher weniger) sinnvollen Gag habe ich vor, meinen zukünftigen Blog-Besuchern das, was bei mir auf dem PC grade so an Musik läuft, per Audio-Stream anzubieten :nerd:

So weit so schön, habe auch schon einen ShoutCast-Server laufen der das was bei mir in Winamp läuft per aac2+ - Stram bis zu 5 geneigten Hörern in den Äther speist :mrgreen:

Ich habe mir auch schon eine kleine PHP-Klasse geschrieben, mit der ich die Daten von ShoutCast-Servern auslesen kann, sodass ich die auf meiner webseite anzeigen kann.

Aber jetzt kommt das Problem... das ganze soll natürlich möglichst schonend für den Web- und den Streamingserver ablaufen und möglichst schnell, damit keine Ladezeitverzögerungen für die Webseitenbesucher entstehen. Andererseits soll aber natürlich auch die Anzeige der Daten möglichst korrekt sein.
Ist der Streaming-Server offline, würde der Ladevorgang momentan 15 Sekunden dauern, so lange ist eben das Timeout :roll:

Folglich dachte ich mir, da muss eine caching Lösung her. Nur habe ich mich mit sowas noch nichtmal theoretisch beschäftigt :roll:

Wie löst man sowas nun am intelligentesten? Wie würdert ihr das Lösen?


Luckie 6. Jan 2007 11:26

Re: Auf der Suche nach der besten Caching-Lösung
 
Wäre das nicht eine öffentlich Aufführung und du müsstes GEMA Gebühren bezahlen?

Meflin 6. Jan 2007 11:33

Re: Auf der Suche nach der besten Caching-Lösung
 
Zitat:

Zitat von Luckie
Wäre das nicht eine öffentlich Aufführung und du müsstes GEMA Gebühren bezahlen?

Steh schon in Kontakt mit denen, das läuft!
Btw sind Sie sehr Off-Topic, Herr Moderator :mrgreen:


Luckie 6. Jan 2007 11:52

Re: Auf der Suche nach der besten Caching-Lösung
 
Ja, gehört aber auch dazu, wie ich finde. Herr Mitglied. :mrgreen:

Daniel 6. Jan 2007 11:54

Re: Auf der Suche nach der besten Caching-Lösung
 
Der Hinweis ist alles andere als OT und die GEMA-Gebühren sind nicht zu unterschätzen. Die letzte Erhöhung hat für viele kleine Internet-Radios das Aus bedeutet.

Sei's drum - wenn Du cachen willst, solltest Du stets nur eine lokale Kopie der Liste auslesen. Die ist stets verfügbar und kostet keine erwähnenswerte Verarbeitungszeit. Was Du dann brauchst, ist ein Script, welches diese lokale Liste regelmäßig - meinetwegen alle 60 Sekunden - aktualisiert.

Meflin 6. Jan 2007 12:00

Re: Auf der Suche nach der besten Caching-Lösung
 
Zitat:

Zitat von Daniel
wenn Du cachen willst, solltest Du stets nur eine lokale Kopie der Liste auslesen. Die ist stets verfügbar und kostet keine erwähnenswerte Verarbeitungszeit. Was Du dann brauchst, ist ein Script, welches diese lokale Liste regelmäßig - meinetwegen alle 60 Sekunden - aktualisiert.

Hm, ich habe leider nur stinknormalen Webspace, keinen eigenen Server :( da ist das höchste der Gefühle ein Cronjob der stündlich ausgeführt wird. Das ist natürlich nicht sehr akkurat :o
Die Aktualisierung dieser Liste müsste also wohl oder übel durch den Webseiten-Besucher ausgelöst werden - das größte Problem das sich mir hier stellt ist wenn der Streaming-Server offline ist, was er ja meistens sein wird. Wie kann ich da die Ladezeiten möglichst gering halten :stupid: Das ist so das Hauptproblem das ich sehe


Daniel 6. Jan 2007 12:14

Re: Auf der Suche nach der besten Caching-Lösung
 
Dann nutze doch einen leicht schmutzigen Trick: Du baust Dir ein PHP-Script, welches ein 1x1 Pixel großes, transparentes GIF-Bild liefert. Dieses Bild baust Du ganz am Ende Deiner Seite ein und hast so Deinen - von Usern ausgelösten - CronJob. Die Seite selbst wird laden und die jeweils zuvor gültige Fassung Deiner Liste anzeigen.

Dein PHP-Script macht natürlich mehr als den Browser mit seinem Bild zu befriedigen: In Deinem Script kannst Du dann selber feststellen, ob es an der Zeit ist, die Liste zu aktualisieren und ggf. entsprechend handeln. Und sollte der Vorgang eben länger dauern, so wird der User praktisch nicht beeinträchtigt, denn das GIF hätte er so oder so nicht gesehen - lediglich der Ladebalken seines Browsers würde noch Aktivität anzeigen.

Phoenix 6. Jan 2007 12:18

Re: Auf der Suche nach der besten Caching-Lösung
 
Bei jedem Seitenaufruf wird die Liste (oder der Serverstatus) aus einem File angezeigt. Nun wird kurz geprüft, wann die letzte Aktualisierung stattfand (die schreibst Du auch rein). Dann musst Du Dir zwei gescheite Intervalle ausdenken, wie oft nun wirklich aktualisiert wird, wenn der Server das letzte mal offline war und wann der Server das letzte mal online war. Wenn Musik läuft sind z.B. 1-2 Minuten okay, wenn er offline ist z.B. 10 Minuten.

Nun kommt der Trick: Ist das intervall rum, wird dem User ein JavaScript mitgeschickt, dass den einen Bereich in dem die Anzeige steht nach 20 Sekunden neu lädt - und nur den Bereich (AJAX lässt grüßen). NACH dem Absender der Seite an den User (also wenn der seine Seite schon komplett geladen hat) stößt das Php-Script die Aktualisierung an. Die darf nun ruhig ihre 15 Sekunden dauern und schreibt das Ergebnis in ein File. Der User bekommt die Aktualisierung des Bereichs nach 20 Sekunden nachgeliefert und ist auf dem neuen Stand.

Ergebnis: Der User hängt im Schlimmsten Fall ein Lied hintendran in der Anzeige, und 10 Minuten wenn der Server vorher offline war.

Meflin 6. Jan 2007 12:51

Re: Auf der Suche nach der besten Caching-Lösung
 
Danke für eure Tips - das hört sich schonmal ziemlich gut an :thumb:

Ich wusste doch, auf die DP kann man sich verlassen :mrgreen:



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz