Heim  >  Artikel  >  Backend-Entwicklung  >  Analysieren Sie, wie PHP den ob-Cache-Mechanismus nutzt, um seitenstatische Lösungen zu implementieren

Analysieren Sie, wie PHP den ob-Cache-Mechanismus nutzt, um seitenstatische Lösungen zu implementieren

巴扎黑
巴扎黑Original
2017-07-21 14:23:251414Durchsuche

Die vorherige Konvertierung der PHP-Ausführungsseite in HTML ist eine der sogenannten statischen PHP-Methoden.

Andere Methoden umfassen Vorlagenersetzung, Opcache und andere Methoden.

Die Rolle der Statik:

Verbesserung der Reaktionsgeschwindigkeit der Website und Reduzierung der Serverlast;
Für SEO von Suchmaschinen;
PHP-Ausgabepuffer direkt verwenden HTML schreiben, Timing Das regelmäßige Scannen der Website im Hintergrund ist eine relativ einfache Möglichkeit, statische Webseiten zu erstellen.

Vor der Statik:

for($i=0;$i<1000;$i++){

echo "bull
";

}

?>

Statisch:

ob_start();

for($i=0;$i<1000;$i++){

echo "bull< ;br> ;";

}

$str = ob_get_contents();

ob_end_clean();

$fp = fopen("test.html ", "w");

fwrite($fp,$str);

fclose($fp);

echo "

success write ";

?>

Dieser Code führt eine test.html durch. Um es ganz klar auszudrücken: Im Gegenzug verbraucht er tatsächlich Platz Für Time ändert sich der veröffentlichte Inhalt wie bei Nachrichten-Websites grundsätzlich nicht, nachdem er geschrieben wurde. Daher ist es besser, ihn statisch in HTML zu konvertieren.

Wenn Benutzer sie besuchen, müssen sie nur auf diese HTML-Seite weiterleiten.




Führen Sie zunächst einige allgemeine Funktionen ein, die häufig im ob-Cache in php verwendet werden

ob_start(): open Cache-Mechanismus

ob_get_contents(): Holen Sie sich den Inhalt im Ob-Cache

ob_clean() löscht den Inhalt im Ob-Cache, aber schließt den Cache nicht

ob_end_clean() clear den ob-Cache im Inhalt und schließen Sie den Cache

ob_flush Löschen Sie den Cache, geben Sie den Inhalt aus, aber schließen Sie den Cache nicht

ob_end_flush Löschen Sie den Cache, geben Sie den Inhalt aus und schließen Sie den Cache

flush erzwingt die Aktualisierung des Inhalts im Cache

Gemäß den Bestimmungen des http-Protokolls kann der Antwortinhalt nicht vor dem Antwortheader ausgegeben werden Bei der Ausgabe vor der Funktion header() tritt ein Fehler auf, aber nach der Verwendung von ob_start() wird der Antwortinhalt zuerst im ob-Cache abgelegt und nicht gesendet, bevor der Nachrichtenheader gesendet wird. Dadurch wird das Problem des Headers gelöst () Fehlermeldung!

Lassen Sie uns darüber sprechen, wie Sie den PHP-eigenen OB-Cache-Mechanismus verwenden, um eine Seitenstatikisierung zu erreichen

Code School PHP

 1 <?php 2     3     $id=$_REQUEST[&#39;id&#39;]; 4       5     //判断缓存文件是否存在,如果存在,直接输出 6     if(file_exists(&#39;content&#39;.$id.&#39;.html&#39;)){ 7       echo file_get_contents(&#39;content&#39;.$id.&#39;.html&#39;); 8       return; 9     }10      11     //开启缓存机制12     ob_start();13      14     //到数据库中查询所需要的内容15     $conn=mysql_connect("localhost","root","root");16     mysql_select(&#39;db&#39;);17     mysql_query(&#39;set names utf8&#39;);18      19     $sql="select content from table_name where id=$id";20     $res=mysql_query($sql);21     $row=mysql_fetch_assoc($res);22     $content=$row[0];23      24     mysql_free_result($res);25     mysql_close($conn);26     echo $content;27     //将输出的内容保存到文件中,形成静态页面,在下次访问的时候,直接读取输出28     file_put_contents(&#39;content&#39;.$id.&#39;.html&#39;,ob_get_contents());29  30  31 ?>

Wie im obigen Code gezeigt:

Speichern Sie den von uns abgefragten Inhalt direkt in der HTML-Datei. Wenn nicht, geben Sie sie aus , greifen Sie auf die Datenbank zu und führen Sie den entsprechenden Abfrageprozess aus

Wenn Sie die Ablaufzeit der Datei festlegen möchten, können Sie in der if-Anweisung eine Beurteilungsbedingung hinzufügen, um festzustellen, ob die zwischengespeicherte Datei abgelaufen ist, time () - die eingestellte Ablaufzeit

Das obige ist der detaillierte Inhalt vonAnalysieren Sie, wie PHP den ob-Cache-Mechanismus nutzt, um seitenstatische Lösungen zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn