phpbar.de logo

Mailinglisten-Archive

[php] Re: Wie cachen von phtml-Dateien ermöglichen ?
Archiv Mailingliste php_(at)_infosoc.uni-koeln.de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[php] Re: Wie cachen von phtml-Dateien ermöglichen ?



Wolfgang Ortmann schrieb am Sonntag, den 23. August 1998:
> [...] Ich benutze php (noch version 2.?) [...]
> Meine Frage ist nun, was ich tun muß, damit diese Seiten von
> proxys oder auch dem browser selbst gecacht werden? 

Hi Wolfgang,

mit der "Apache Module Configuration Directive"
   phpLastModified on
bewirkst Du, daß PHP/FI automatisch die HTTP-Headerzeile "Last-Modified:"
mit dem Alter der phtml-Seite erzeugt, so wie's der Apache bei normalen
html-Seiten auch machen würde.

Bei PHP3 heißt die Direktive entsprechend
   php3_last_modified [on|off]

Falls bei an Deinen Seiten (per include etc.) beteiligten PHP-Dateien
doch öfters Änderungen auftreten, müßtest Du selber die jüngste
Änderungsdatum finden.

Ich hab' mal sowas gemacht und dabei sogar das letzte Änderungsdatum
einer am Seiteninhalt beteiligten Datenbank mit berücksichtigt:
(Code ist noch im alten PHP/FI ...)

---- header.phpinc ---------------------------------------------------
<?
 /*
  *   Input :
  *            Liste der Include-Dateien          in  $include_file[]
  *            
  *            Änderungsdatum der Nutzdaten       in  $data_lastmod_date
  *
  *            plus optional:
  *            Name der Datenbank                 in  $mysql_db
  *            SQL-Anfrage für Datum der letzten
  *              Änderung der Nutzdaten           in  $mysql_query
  *
  *   Output:
  *            HTTP-Header "Last-Modified:"
  *            (plus einige Variablen :-)
  */

  $timezone = Date("Z");  /* Hier ist mein Patch für Date nötig! */
  if ($timezone < 0);
     $timezone = gmDate("+Hi", 0-$timezone);
  else;
     $timezone = gmDate("-Hi", $timezone);
  endif;

  if ( $mysql_query != "" );
     /* Hier wird die eigentliche DB-Anfrage durchgeführt.
        Da klar sein sollte, was da intern abläuft, lasse
        ich's hier mal wie in meinem Original stehen: */
     include("mysql_query.phpinc");
     if (($mysql_result > 1) && ($mysql_numrows != 0));
        if ( $mysql_field["0.0"] > $data_lastmod_date );
          $data_lastmod_date = $mysql_field["0.0"];
        endif;
     endif;
  endif;

  if ( $data_lastmod_date != 0 );
     $data_lastmod_string = Date("D, Y-m-d H:i:s ",$data_lastmod_date)
                          + $timezone;
  endif;

  $file_lastmod_date   = fileMtime($SCRIPT_FILENAME);
  $local_n = count($include_file);
  if ( $local_n > 0 );
    /* Schleife über alle Include-Dateien. */
    $local_i = 0;
    while ( $local_i < $local_n );
      $local_t = fileMtime( $include_file[$local_i] );
      if ( $local_t > $file_lastmod_date );
        $file_lastmod_date = $local_t;
      endif;
      $local_i++;
    endwhile;
  endif;
  $file_lastmod_string = Date("D, Y-m-d H:i:s ",$file_lastmod_date)
                       + $timezone;

  if ( $data_lastmod_date > $file_lastmod_date );
     $lastmod_date = $data_lastmod_date;
  else;
     $lastmod_date = $file_lastmod_date;
  endif;

  $lastmod_string = gmDate("D, d M Y H:i:s G\MT",$lastmod_date);
?>
---- ende ------------------------------------------------------------

Ciao,
  Martin
-- 
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ >
PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26  E4 EC 80 58 7B 31 3A D7

  Früher erröteten die Mädchen, wenn sie sich schämten,
  heute schämen sie sich, wenn sie erröten. -- unbekannt

Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive