Hallo Kai,
Da mir die ewige copy&paste-Orgie der häufig benötigten Javascript-Funktionen pro Projekt auf den Geist geht (und nebenbei für einen gewaltigen Verwaltungsaufwand sorgt, falls sich eine dieser Funktionen ändert/verbessert wird) habe ich vor, jede Funktion bzw. Funktionsgruppe als gesonderte Ressource auf dem Server abzulegen.
wie häufig kommen solche Änderungen vor?
- PHP liest eine Konfigurations-Datei (text, csv, ini, xml ... Format erst mal nebensächlich) ein, in der die jeweils benötigten Ressourcen notiert sind (Alternativ: Verzicht auf Konfiguration und Notation direkt im PHP-Code)
Die Alternative ist keine, Stichwort "Wartbarkeit".
Nun zum eigentlichen "Problem":
Ich frage mich (und erhalte keine Antwort), ob es sinnvoll ist, diese Ressource jedes Mal neu zusammenbauen zu lassen,
hört sich nicht sinnvoll an. Wegen einer Aktualisierung pro Woche (selbst pro Tag) stets dynamisch die Ressource zu erzeugen.
oder eine Routine einzubauen, die für jede einzelne Ressource prüft, ob diese aktueller ist als die erzeugte Ausliefer-Ressource. (filemtime).
oder einen anderen Ansatz zu wählen.
Nur: Wie sehr belastet das Auslesen dieser Information den Server? Habe ich durch Einlesen, Vergleich usw. dann überhaupt noch einen Vorteil? Genauer gefragt (das geht in den Bereich Datei-System, wovon ich keine Ahnung habe daher meine dumme Frage) muß der Server jede Datei abklappern
nein, das entsprechende Verzeichnis. Ja, es wäre eine verflixt gute Idee, diese Dateien in einer sehr flachen Verzeichnishierarchie mit wenigen Verzeichnissen zu haben.
Denke daran, dass Dir kein clientseitiges Caching einen Strich durch die Rechnung machen darf, am einfachsten geht dies mit der Aktualisierung des Namens, zum Beispiel gleichbleibendes Präfix plus Timestamp. Bei gleichbleibender Ressource sollte der Client jedoch vom Caching profitieren - und Deinen Server entlasten.
Daher schlage ich Dir vor, auf den Upload einer aktualisierten Ausgangsdatei zu reagieren. Danach prüft Dein Skript, welche Ressourcen (gemäß Konfiguration) neu zu erzeugen sind und erzeugt genau diese mit dem aktualisierten Namen. Möglichkeiten, das Skript anzustoßen, wären
a) inotify [1], falls es Dir auf Linux-Systemen zur Verfügung steht
b) Aktualisierung nur über ein Uploadskript
c) Ausführen eines cron-jobs
d) Manuelles Anstoßen durch Dich
Freundliche Grüße
Vinzenz
[1] inzwischen sehe ich ein, dass der Einsatz sinnvoll sein kann.