Maison > développement back-end > tutoriel php > Analysez comment PHP utilise le mécanisme de cache ob pour implémenter des solutions statiques de page

Analysez comment PHP utilise le mécanisme de cache ob pour implémenter des solutions statiques de page

巴扎黑
Libérer: 2023-03-13 21:08:02
original
1492 Les gens l'ont consulté

La conversion préalable de la page d'exécution PHP en HTML est l'une des méthodes dites statiques PHP.

D'autres méthodes incluent le remplacement de modèle, l'opcache et d'autres méthodes.

Le rôle de la staticisation :

Améliorer la vitesse de réponse du site Web et réduire la charge du serveur ;
Pour le référencement des moteurs de recherche
Utiliser le tampon de sortie PHP pour directement ; écrire du HTML, chronométrer L'analyse régulière du site Web en arrière-plan est un moyen relativement simple d'obtenir des pages Web statiques.

Avant statique :

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

echo "bull
";

}

?>

Statique :

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 "

écriture réussie ";

?>

Ce code préformera un test.html. Pour parler franchement, il utilise en fait de l'espace en échange pour Time, comme pour les sites d'information, le contenu publié ne changera fondamentalement pas une fois écrit, il est donc plus approprié de le convertir statiquement en HTML.

Lorsque les utilisateurs visitent, il leur suffit de se diriger vers cette page html.




Introduisez d'abord plusieurs fonctions courantes couramment utilisées dans le cache ob dans php

ob_start() : mécanisme de cache ouvert

ob_get_contents() : Récupère le contenu dans le cache ob

ob_clean() efface le contenu dans le cache ob, mais ne ferme pas le cache

ob_end_clean() clear le contenu du cache ob dans le contenu et fermez le cache

ob_flush Videz le cache, affichez le contenu, mais ne fermez pas le cache

ob_end_flush Videz le cache, affichez le contenu et fermez le cache

flush force l'actualisation de la sortie Contenu dans le cache

Selon les dispositions du protocole http, le contenu de la réponse ne peut pas être affiché avant l'en-tête de réponse. Par conséquent, s'il y en a. sortie de contenu devant la fonction header(), une erreur se produira, mais après avoir utilisé ob_start(), le contenu de la réponse sera d'abord placé dans le cache ob et ne sera pas envoyé avant l'envoi de l'en-tête du message. Cela résout le problème de. rapport d'erreur header() !

Parlons de la façon d'utiliser le propre mécanisme de cache ob de PHP pour réaliser la statique de page

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 ?>
Copier après la connexion

Comme indiqué dans le code ci-dessus :

Enregistrez le contenu que nous interrogeons directement dans le fichier html. Si le fichier existe, affichez-le. Sinon, s'il existe, accédez à la base de données et exécutez le processus de requête correspondant

Si vous souhaitez définir l'heure d'expiration du fichier, vous pouvez ajouter une condition de jugement dans l'instruction if pour déterminer si le fichier mis en cache a expiré, time () - le délai d'expiration défini

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal