Maison  >  Article  >  développement back-end  >  Explication détaillée des avantages et exemples de code de la technologie de mise en cache des pages Web PHP

Explication détaillée des avantages et exemples de code de la technologie de mise en cache des pages Web PHP

coldplay.xixi
coldplay.xixiavant
2020-08-01 16:25:022332parcourir

Explication détaillée des avantages et exemples de code de la technologie de mise en cache des pages Web PHP

Frontend statique : analysez la page dynamique et enregistrez-la en tant que page statique

Cache de fichiers : enregistrez les résultats de la requête sous forme de fichier, XML

Cache mémoire :memcache

php cache : Il peut être utilisé pour stocker des données dans divers formats, notamment des images, des vidéos, des fichiers et des résultats de recherche dans des bases de données. En termes simples, les données sont appelées dans la mémoire puis lues depuis la mémoire, améliorant ainsi considérablement la vitesse de lecture. Memcache est un projet de danga. Il a d'abord été développé par LiveJournal. Il a été initialement développé pour accélérer l'accès à LiveJournal et a ensuite été adopté par de nombreux grands sites Web. Memcached s'exécute sur un ou plusieurs serveurs en tant que démon et recevra à tout moment les connexions et les opérations des clients.

XCache est un cache/optimiseur d'opcode open source, ce qui signifie qu'il peut améliorer les performances de PHP sur votre serveur. Il évite les processus de compilation répétés en mettant en mémoire tampon les données PHP compilées dans la mémoire partagée. Possibilité d'utiliser directement la compilation en mémoire tampon. code pour augmenter la vitesse. Augmente généralement le taux de génération de vos pages de 2 à 5 fois, réduisant ainsi la charge du serveur.

************** ********* ***************************************** ******** ******************************************* ******* *****************************

1.Technologie de mise en cache universelle:

Cache de données : Le cache de données mentionné ici fait référence au mécanisme de cache PHP de requête de base de données. Chaque fois qu'une page est accédée, il détectera d'abord si les données mises en cache correspondantes existent. Si elles n'existent pas, la base de données obtient les données. et sérialise les résultats de la requête et les enregistre dans le fichier. À l'avenir, les mêmes résultats de requête sont obtenus directement à partir de la table ou du fichier de cache.

L'exemple le plus largement utilisé est la fonction de recherche de Discuz, qui met en cache l'ID du résultat dans une table et recherche d'abord la table de cache lors de la recherche suivante du même mot-clé.

Comme méthode courante, lorsque plusieurs tables sont associées, le contenu de la table attachée est généré et enregistré dans un tableau dans un champ de la table principale. Si nécessaire, le tableau est décomposé. est qu'une seule table peut être lue, l'inconvénient est qu'il y aura beaucoup plus d'étapes pour synchroniser les deux données. La base de données est toujours le goulot d'étranglement. L'échange du disque dur contre la vitesse est le point clé de cela.

2. Cache de page :

Chaque fois que vous accédez à une page, il vérifiera d'abord si le fichier de page mis en cache correspondant existe. S'il n'existe pas, connectez-vous à. la base de données et obtenez des données, affichez la page et générez un fichier de page de cache en même temps, afin que le fichier de page soit efficace lors de votre prochaine visite. (Les moteurs de modèles et certaines classes de mécanismes de mise en cache PHP courantes sur Internet ont généralement cette fonction)

3 Mise en cache déclenchée par le temps :

Vérifiez si le fichier existe et si le fichier existe. l'horodatage est inférieur au paramètre L'heure d'expiration, si l'horodatage de modification du fichier est supérieur à l'horodatage actuel moins l'horodatage d'expiration, utilisez le cache, sinon mettez à jour le cache.

4. Mise en cache déclenchée par le contenu :

Lorsque des données sont insérées ou mises à jour, le mécanisme de cache PHP est forcé d'être mis à jour.

5. Cache statique :

Le cache statique mentionné ici fait référence au cache statique, qui génère directement des fichiers texte tels que HTML ou XML, et les régénère lorsqu'il y a des mises à jour. . , adapté aux pages qui ne changent pas beaucoup, je n’en parlerai donc pas ici.

Le contenu ci-dessus est une solution au niveau du code. Je CP directement d'autres frameworks et je suis trop paresseux pour changer. Le contenu est similaire, il est facile à faire et peut être utilisé de plusieurs manières, mais ce qui suit. le contenu est destiné au serveur. La solution de mise en cache de bout en bout, sans niveau de code, nécessite la coopération de plusieurs parties pour réaliser

6 Cache mémoire :

Memcached est un. Le système de mécanisme de mise en cache Object PHP à mémoire distribuée hautes performances est utilisé pour réduire la charge de la base de données et améliorer la vitesse d'accès dans les applications dynamiques.

7. Buffer PHP :

Il y a eaccelerator, apc, php, xcache, je ne parlerai pas de celui-ci, cherchez-en un tas vous-même. Écoutez, c'est OK de savoir que cette chose existe

8. Cache MYSQL :

Ceci est également considéré comme un niveau non-code. Les bases de données utilisent cette méthode. temps ci-dessous, 0,09xxx et similaires

9. Cache Web basé sur un proxy inverse :

Tels que Nginx, SQUID, mod_proxy (apache2 et supérieur sont divisés en Pour mod_proxy et mod_cache)

10. Sondage DNS :

, recherchez-le vous-même, sachez simplement que cette chose existe.
Je sais que certains grands sites Web tels que chinacache font cela. Pour faire simple, il s'agit de plusieurs serveurs. La même page ou le même fichier est mis en cache sur différents serveurs et automatiquement analysé en fonction des serveurs concernés. le nord et le sud dans le serveur.

Exemple de mise en cache de pages Web PHP

  • ob_start():页面缓存开始的标志,此函数一下的内容直至ob_end_flush()或者ob_end_clean()都保存在页面缓存中;
  • ob_get_contents():用来获取页面缓存中的内容,获取到以后呢,我们就可以想怎么处理这些内容都行了,过滤字段啦,匹配内容啦,都可以~~~ :)
  • ob_end_flush():表示页面缓存结束。并且经我验证,缓存的内容将输出到当前页面上,也就是可以显示缓存内容。

用此三个php函数,就可以实现强大的功能。如果数据库查询量较大,可以用cache来解决这个问题。

首先,设定过期时间,如果要求缓存文件2个小时过期,就可以设定cache_time为3600*2;通过filectime()来获取缓存文件的创建时间(或 filemtime()获取修改时间),如果当前时间跟文件的创建时间超过限定的过期时间,就可以通过上面三个函数,首先从数据库中取出数据,然后开始缓存ob_start(),然后把要生成的页面的html代码写在缓存中,缓存结束后通过ob_get_contents()获取到缓存的内容,然后通过fwrite把缓存内容写到静态页面html。

如果未过期,直接读取cache中的静态页面即可,避免了大量的数据库访问。

<?php
$_time =10;
$dir="D:\\php\\";
 
function cache_start($_time, $dir)
{
 $cachefile = $dir.&#39;/&#39;.sha1($_SERVER[&#39;REQUEST_URI&#39;]).&#39;.html&#39;;
 $cachetime = $_time;
 ob_start();
 if(file_exists($cachefile) && (time()-filemtime($cachefile) < $cachetime))
 {
  include($cachefile);
  ob_end_flush();
  exit;
 }
}
 
function cache_end($dir)
{
 $cachefile = $dir.&#39;/&#39;.sha1($_SERVER[&#39;REQUEST_URI&#39;]).&#39;.html&#39;;
 $fp = fopen($cachefile, &#39;w&#39;);
 fwrite($fp, ob_get_contents());
 fclose($fp);
 ob_end_flush();
}
 
cache_start($_time, $dir);
//以下是输出的内容,放在cache_start和cache_end两个方法之间
for ($i=0;$i<5;$i++)
{
 echo $i;
 sleep(1);
}
cache_end($dir);
?>

相关学习推荐:PHP编程从入门到精通

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer