Statische Seiten cachen auf Knopfdruck?

Hi,

ich habe einige statische Seiten die sich fast nie ändern und andere alle 24 Stunden nur einmal aktualisiert werden müssen.

Das Impressum zum Beispiel ändert sich eher selten, sodass ich den Zeitraum hier auf 999999999 setzen würde. Wenn der Fall dann doch eintritt das ich dort was ändere würde ich die Seite gerne auf "Knopfdruck" löschen und neu anlegen lassen.

Wir implementiere ich soetwas mit yii?

Wie überprüft yii ob eine Seite aktualisiert werden muss? Muss ich die Uhrzeit des Caches in die DB schreiben?

thx

Mit statischen Seiten könntest du folgendes machen:




public function filters()

{

    return array(

        array(

            'COutputCache',

            'duration' => 99999999,

            'varyByParam' => array('view'),

            'dependency' => array(

               'class' => 'CExpressionDependency',

               'expression' => "filemtime($pfad_zu_den_views . '/' . $_GET['view'] . '.php')",

            ),

        ),

    );

}



Immer wenn eine Seite gecached wird, wird dann auch automatisch die filemtime() der Datei über die Dependency mitgespeichert. Bedeutet wenn die Dateizeit sich durch Modifikation ändert, dann wird wieder neu gecached. Alternativ gibts noch CDirectoryCacheDependency - das funktioniert dann auf einen Ordner inklusive aller Dateien. Allerdings müssen bei einer Änderung dann jeweils alle Dateien neu gecached werden.

Aber macht es überhaupt Sinn statische Seiten zu cachen? Du sagst ja selber da ändert sich eh nix. Daher ist der Bereich zu vernachlässigen. Das macht den Controller-Code nur unnötig fett.

Danke für die Antwort!

Ich habe auf den statischen Seiten eine Box die sich alle 24 Stunden mit neuem Inhalt füllt (die besten Suchanfragen von gestern)

Die erste Berechnung nimmt relativ viel Zeit in Anspruch sodass ich dies nur auf 1/Tag reduzieren würde um die Seiten so schnell wie möglich auszuliefern.

Was ist mit dynamischen Seiten? Wie cacht man diese am besten, wo alle Werte aus der DB geholt werden?

Wie gehe ich damit um wenn ich etwas ändert? Wo speichere ich den neuen Wert ein?

Ich habe mal gelesen das man eine Spalte in der DB einfügen soll und diese immer Abfragen.

Oder gibt es eine Möglichkeit wo ich die Seiten als Dateien abliefern kann und somit nie eine DB Abfrage erstellen muss?

Ich kann zwar nichts zum Caching sagen, aber vllt. könntest du versuchen die Performance der Abfrage zu verbessern indem du eine sinnvolle Index-Struktur über die Suchabfragen-Tabelle legst oder die Struktur der Tabelle dahingehend verändert, dass die Abfrage einfacher wird.

Was genau ist mit "beste Suchanfragen" gemeint ?