AllesMeins: Seiten Cachen - Macht das Sinn?

Beitrag lesen

Hi,

Das Problem dabei ist: Wenn du am statischen Teil, der für mehrere oder alle Seiten gilt, was änderst, bist zu gezwungen, alle statischen Seiten neu zu generieren.

Ja, aber das ließe recht einfach lösen indem man die Seiten beim Ausliefern cachen lässt. Da müssen sie sowieso zusammengebaut werden und dann kann der Krams auch einfach wieder in den Cache geschrieben werden. Wenn sich dann wirklich was am statischen Teil ändert löscht man einfach die entsprechenden Dateien aus dem Cache und wartet bis die betreffende Seite erneut abgerufen wird. Es ist ja unnötig den Cache beim Ändern direkt wieder komplett zu befüllen sondern das kann ja gemacht werden, wenn die betreffende Seite zum ersten mal angefragt wird.

Und bevor du einwenden willst, dass du ja nur die Seiten generieren mußt, die sich geändert haben: Vergiß es! Es ist vermutlich aufwendiger (mindestens hinsichtlich der zu erstellenden Auswahllogik, vermutlich aber auch hinsichtlich der dafür zu ermittelnden Informationen), herauszufiltern, ob eine Seite neu generiert werden muß, anstatt einfach pauschal alle Seiten zu generieren.

Nein, denn es ist bei mir sehr streng definiert auf welche Seiten eine Änderung Auswirkungen hat. Generell gibt es zwei Fälle:
a.) Es wird eine seite geändert, betrifft eine Seite
b.) Es wird das design geändert, betrifft alle Seiten.

Ich habe mal ein CMS geschrieben, welches einen zentralen Seitenpool und individuelle Seiten für viele Filialen eines Unternehmens verwalten sollte. Wenn keine individuelle Seite existiert, wird die allgemeine Seite verwendet. Die Generierung der gesamten Website (ca. 300 Filialen, je Filiale etwa 15 Seiten) dauerte mehr als 15 Minuten

Wozu war es nötig alle Seiten auf einmal zu generieren? Hätte es nicht ausgereicht die Seiten nur dann zu generieren, wenn sie zum ersten mal abgerufen werden sollen?

Nein, das bestreite ich, solange du keine Meßergebnisse bringst. Warum ist es weniger effektiver, einfach eine simple PHP-Datei mit wenig PHP zu parsen und an den Browser zu schicken? Dein System muß eine PHP-Datei parsen, dann eine Cache-Datei öffnen, eine Zeile 1 interpretieren, den nachfolgenden Inhalt ausgeben, oder den nachfolgenden Inhalt evaluieren, und dann das ganze an den Browser schicken. Sieht irgendwie deutlich aufwendiger aus.

Schon ein bisschen unfairer Vergleich zwischen "einfach parsen" und das andere System total auseinandergenommen, oder?
Einfach parsen ist auch: PHP Datei öffnen, statisches HTML an den Browser senden, PHP block parsen, include-Datei (und womöglich noch die Datenquelle) öffnen, lesen, parsen, ergebniss an den Browser schicken, weiteres HTML lesen, rausschicken, PHP-Block parsen, include-Datei öffnen usw.
Und die PHP-Anweisungen sind deutlich aufwendiger.

Ist ja nicht so als könnte PHP die grundlegenden Dinge wie "vom filesystem lesen, Datei durchgehen, weitere Dateien lesen usw." sich sparen. Deshalb sage ich ja, das ich keine großen Nachteile sehe, da PHP diese "lästigen" Arbeiten ja auch alle erledigen muss.

Also bitte nachmessen, was schneller ist. Wenn du nicht messen kannst, kannst du nicht optimieren. Nur weil du GLAUBST, dass etwas schneller ist, muß das nicht wirklich so sein.

Behaupte ich auch nicht. Aber um zu messen muss man bauen und vorm bauen frag ich doch lieber nach ob nicht irgendwer schon im Voraus einen dicken Konzeptionsfehler findet.
Aber ich werde das dann wohl einfach mal ausprobieren. Irgendwelche Tipps wie ich am dümmsten messe, eine einfache Laufzeitberachtung wird es ja wohl kaum tun...

Wie erwähnt: Datenbanken haben Caches, es ist also beim zweiten und dritten Zugriff auf die gleichen Daten schneller ein Ergebnis geholt.

Funktioniert aber auch nur, wenn die Datenbank auf dem selben Rechner rödelt...

Bedenke auch, dass die Bedienbarkeit des CMS für den Autor betrachtet werden muß. Was bringt es, wenn man als Besucher statt schnell jetzt sehr schnell an die Seiten kommt, wenn der Autor nach einer Änderung erst mal 5 Minuten lang Seiten generieren lassen muß, damit der Cache aktualisiert ist.

Keine Frage. Ausliefern von nicht aktuellen Seiten ist definitiv inakzeptabel. Aber das wird auch nicht weiter passieren, da sich immer nur einzelne Seiten ändern lassen.

Marc