Yii Framework Forum: Statische Seiten cachen auf Knopfdruck? - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Statische Seiten cachen auf Knopfdruck? Rate Topic: -----

#1 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 02 June 2012 - 03:06 PM

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
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#2 User is offline   Y!! 

  • Advanced Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 978
  • Joined: 18-June 09

Posted 02 June 2012 - 03:52 PM

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.
0

#3 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 03 June 2012 - 03:07 AM

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?


View PostY!!, on 02 June 2012 - 03:52 PM, said:

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.

Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#4 User is offline   ibo_s 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 19
  • Joined: 19-July 11

Posted 08 June 2012 - 09:13 AM

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 ?

View Postyii, on 03 June 2012 - 03:07 AM, said:

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?

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users