Heim >Backend-Entwicklung >PHP-Tutorial >Analysieren Sie, wie PHP den ob-Cache-Mechanismus nutzt, um seitenstatische Lösungen zu implementieren
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 "
?>
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
1 <?php 2 3 $id=$_REQUEST['id']; 4 5 //判断缓存文件是否存在,如果存在,直接输出 6 if(file_exists('content'.$id.'.html')){ 7 echo file_get_contents('content'.$id.'.html'); 8 return; 9 }10 11 //开启缓存机制12 ob_start();13 14 //到数据库中查询所需要的内容15 $conn=mysql_connect("localhost","root","root");16 mysql_select('db');17 mysql_query('set names utf8');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('content'.$id.'.html',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!