Maison >développement back-end >tutoriel php >Yii Framework Official Guide Supplement Series 29 - Mise en cache : mise en cache des données

Yii Framework Official Guide Supplement Series 29 - Mise en cache : mise en cache des données

黄舟
黄舟original
2017-02-15 09:15:201225parcourir



La mise en cache des données stocke certaines variables PHP dans le cache, puis les récupère du cache ultérieurement. À cette fin, la classe de base CCache des composants de mise en cache fournit les deux méthodes les plus couramment utilisées : set() et get().

Pour stocker une variable $value dans le cache, on choisit un identifiant unique et on appelle set() pour la stocker :


Yii::app()->cache->set($id, $value);

Les données mises en cache resteront dans le cache à moins qu'elles ne soient effacées en raison d'une politique de mise en cache (par exemple, l'espace du cache est plein, les anciennes données sont supprimées). Pour modifier ce comportement, nous pouvons fournir un paramètre d'expiration lors de l'appel de set(), afin que les données mises en cache soient effacées après une période de temps définie :


// 值$value 在缓存中最多保留30秒
Yii::app()->cache->set($id, $value, 30);

Plus tard, lorsque nous aurons besoin d'accéder à cette variable (dans la même requête Web ou dans une requête Web différente), nous pouvons appeler get() par ID pour l'obtenir du cache Back. Si false est renvoyé, cela signifie que cette valeur n'est pas disponible dans le cache et nous devons la régénérer.


$value=Yii::app()->cache->get($id);
if($value===false)
{
    // 因为在缓存中没找到 $value ,重新生成它 ,
    // 并将它存入缓存以备以后使用:
    // Yii::app()->cache->set($id,$value);
}

Lors de la sélection d'un ID pour la variable à mettre en cache, assurez-vous que cet ID est cohérent avec tous les autres variables de l'application sont uniques. Cet identifiant n'a pas besoin d'être unique entre les différentes applications. Le composant de mise en cache est suffisamment intelligent pour différencier les identifiants dans différentes applications.

Certaines mémoires de cache, telles que MemCache, APC, prennent en charge la récupération de plusieurs valeurs de cache en mode batch. Cela réduit la surcharge liée à la récupération des données mises en cache. À partir de la version 1.0.8, Yii propose une nouvelle méthode appelée mget(). Il peut profiter de cette fonctionnalité. Si la mémoire cache sous-jacente ne prend pas en charge cette fonctionnalité, mget() peut toujours la simuler.

Pour effacer une valeur mise en cache du cache, appelez delete(); pour effacer toutes les données du cache, appelez flush(). Soyez prudent lorsque vous appelez flush() car cela effacera également les caches d'autres applications.

Astuce : Puisque CCache implémente ArrayAccess, le composant cache peut également être utilisé comme un tableau. Voici quelques exemples :


$cache=Yii::app()->cache;
$cache['var1']=$value1;  // 相当于: $cache->set('var1',$value1);
$value2=$cache['var2'];  // 相当于: $value2=$cache->get('var2');

Dépendances du cache

En plus de paramètres d'expiration, les données mises en cache peuvent également devenir invalides en raison de modifications des conditions de dépendance. Par exemple, si nous mettons en cache le contenu de certains fichiers et que ces fichiers changent, nous devons invalider les données mises en cache et lire le dernier contenu du fichier plutôt que du cache.

Nous représentons une dépendance comme une instance de CCacheDependency ou l'une de ses sous-classes. Lors de l'appel de set(), nous le transmettons avec les données à mettre en cache.


// 此值将在30秒后失效
// 也可能因依赖的文件发生了变化而更快失效
Yii::app()->cache->set($id, $value, 30, new CFileCacheDependency('FileName'));

Maintenant, si nous récupérons $value du cache en appelant get() , la dépendance sera Check que si des changements ont eu lieu, nous obtiendrons une fausse valeur indiquant que les données doivent être régénérées.

Ce qui suit est une brève description des dépendances de cache disponibles :

  • CFileCacheDependency : Si l'heure de la dernière modification du fichier change, la dépendance change.

  • CDirectoryCacheDependency : Si les fichiers du répertoire et de ses sous-répertoires changent, la dépendance change.

  • CDbCacheDependency : si le résultat de la requête de l'instruction SQL spécifiée change, la dépendance change.

  • CGlobalStateCacheDependency : si l'état global spécifié change, la dépendance change. L’état global est une variable de requête croisée et de session dans l’application. Il est défini via CApplication::setGlobalState().

  • CChainedCacheDependency : cette dépendance change si une dépendance dans la chaîne change.

  • CExpressionDependency : Si le résultat de l'expression PHP spécifiée change, la dépendance change. Cette classe est disponible depuis la version 1.0.4.

Ce qui précède est la série 29 du supplément au guide officiel du Yii Framework - Cache : cache de données. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
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