Maison  >  Article  >  développement back-end  >  Analyse de l'implémentation par ThinkPHP de la mise en cache statique et de la mise en cache dynamique

Analyse de l'implémentation par ThinkPHP de la mise en cache statique et de la mise en cache dynamique

不言
不言original
2018-06-08 14:53:061496parcourir

Cet article présente principalement l'exemple de code de ThinkPHP pour implémenter la mise en cache statique et la mise en cache dynamique, qui a une certaine valeur de référence. Les amis intéressés peuvent se référer à

Mise en cache statique

Pour utiliser la fonction de mise en cache statique, vous devez activer le paramètre HTML_CACHE_ON et définir le fichier de règles de mise en cache statique à l'aide du paramètre de configuration HTML_CACHE_RULES.

Définir des règles statiques

'HTML_CACHE_ON'   =>  true, // 开启静态缓存
'HTML_CACHE_TIME'  =>  60,  // 全局静态缓存有效期(秒)
'HTML_FILE_SUFFIX' =>  '.shtml', // 设置静态缓存文件后缀
'HTML_CACHE_RULES' =>   array( // 定义静态缓存规则
   // 定义格式1 数组方式
   '静态地址'  =>   array('静态规则', '有效期', '附加规则'), 
   // 定义格式2 字符串方式
   '静态地址'  =>   '静态规则', 
)
Le répertoire racine du fichier de cache statique se trouve sous le chemin défini par HTML_PATH, et seules les opérations avec des règles statiques définies seront statiquement mis en cache. Et le cache statique prend en charge différents types de stockage. La mise en cache statique ne fonctionne que sous les requêtes GET.


Adresse statique

Règles statiques d'opération globales

'read'=>array('{id}',60)//定义所有的read操作的静态规则
Définir les règles statiques globales du contrôleur

'user:'=>array('User/{:action}_{id}','600')//定义所有的User控制器的静态规则
Définir des règles statiques pour le fonctionnement d'un certain contrôleur //Définir l'opération de lecture du contrôleur Blog pour la mise en cache statique

'blog:read'=>array('{id}',0)//参数为0表示永久缓存
Définir des règles de mise en cache statique globales

'*'=>array('{$_SERVER.REQUEST_URI|md5}')//这个属于特殊情况下的使用,任何模块的操作都适用

Statique Règles

Les règles statiques sont utilisées pour définir les noms des fichiers statiques à générer. La définition des règles statiques doit garantir qu'il n'y aura pas de conflits.


Utiliser des variables système

{$_×××|function}//_GET、_REQUEST、_SERVER、_SESSION、_COOKIE
{$_GET.name} 
{$_SERVER.REQUEST_URI|md5}
Utiliser des variables personnalisées du framework

{:module}/{:controller}_{:action}//{:module} 、{:controller} 和{:action}分别表示当前模块名、控制器名和操作名。
Utiliser des variables _GET

{var|function}//{id}其实等效于 {$_GET.id}
Utiliser directement le fonction

{|function}//{|time},time函数获取时间后作为文件名称
Définition mixte

'{id},{name|md5}' //在{}之外的字符作为字符串对待,如果包含有"/",会自动创建目录。
{:module}/{:action}_{id}//会在静态目录下面创建模块名称的子目录,然后写入操作名_id.shtml 文件。

Cache dynamique

[Cache de données de la méthode S]

initialisation du cache

S(array('type'=>'xcache','expire'=>60));
Les types de cache actuellement pris en charge par le système incluent : Apachenote, Apc, Db, Eaccelerator, File, Memcache, Redis, Shmop, Sqlite, Wincache et Xcache. Si la méthode S ne transmet pas le paramètre de type pour l'initialisation, la valeur du paramètre DATA_CACHE_TYPE définie dans le fichier de configuration est lue comme type par défaut. De la même manière, si le paramètre prefix n'est pas transmis, la valeur du paramètre DATA_CACHE_PREFIX du fichier de configuration sera lue. Si le paramètre expire n'est pas transmis, la valeur de configuration DATA_CACHE_TIME sera lue par défaut.


Pour la mise en cache globale, nous recommandons généralement d'ajouter le paramètre préfixe (préfixe de cache) pour distinguer les différentes applications afin d'éviter toute confusion.

Définir le cache


Le cache de données peut prendre en charge la file d'attente du cache. En termes simples, vous pouvez limiter le nombre de caches. Il vous suffit de spécifier le paramètre de longueur lors de l'initialisation.

S('name',$value);
S('name',$value,300);//缓存数据300秒
S('name',$value,array('type'=>'file','expire'=>300));//改变之前的缓存方式或者更多的参数
S(array('type'=>'xcache','length'=>100,'expire'=>60));//系统只会缓存最近的100条缓存数据。
Lire le cache

$value = S('name');//如果缓存标识不存在或者已经过期,则返回false,否则返回缓存值。
Supprimer le cache

S('name',null);
Remarque : lors de l'utilisation de chaque cache, ThinkPHP doit charger le fichier de pilote correspondant et définir Bon correspondant configuration.

Exemples d'utilisation

$user = M('User');
$value = S('list');
if (empty($value)) {
  $list = $user->select();
  S('list', $list, 3600);
  echo '这个是直接从数据库中读取的文件';
  dump($list);
} else {
  echo '这个是缓存文件';
  dump($value);
}

[Cache rapide]

Le système fournit également une méthode de cache rapide F pour des opérations plus rapides. Cependant, le F. La méthode n'a pas de période de validité. La méthode F peut prendre en charge différents types de stockage. S'il s'agit d'un type de fichier, il est enregistré par défaut dans le répertoire DATA_PATH. [Cache de requêtes]


La fonction de cache de requêtes prend en charge toutes les bases de données et prend en charge toutes les méthodes de mise en cache et toutes les périodes de validité.

F('data',$Data);
F('data',$Data,TEMP_PATH);//快速缓存Data数据,保存到指定的目录
F('User/data',$Data);//F方法支持自动创建缓存子目录,在DATA_PATH目录下面缓存data数据,如果User子目录不存在,则自动创建。
Lors de l'utilisation du cache de requêtes, il vous suffit d'appeler la méthode cache de la classe Model.

$Data = F('data');
Si cache(true) est utilisé, un cache de requêtes avec un identifiant unique sera généré en fonction des conditions de requête actuelles et d'autres informations lors de l'interrogation. Si une clé est spécifiée, le nom sera généré. directement. Interrogez le cache pour la clé.

F('data',NULL);
Par défaut, la méthode de cache utilise la méthode de cache définie par le paramètre DATA_CACHE_TYPE (la valeur par défaut du système est File, ce qui signifie que le cache de fichiers est utilisé. La période de validité du cache est la durée définie par le). Paramètre DATA_CACHE_TIME. Le cache de requêtes peut également être spécifié séparément. Méthode de mise en cache et période de validité.

Si la clé du cache de requêtes est spécifiée, le contenu du cache de requêtes peut être directement obtenu en externe via la méthode S.


En plus de la méthode select, le cache de requêtes prend également en charge les méthodes find et getField, ainsi que leurs méthodes dérivées (y compris les méthodes de requête statistique et de requête dynamique).

Cet article provient principalement de la documentation officielle Si vous avez des questions, veuillez vous référer à la documentation officielle de ThinkPHP3.2 - Cache
$Model->cache(true)->where('status=1')->select();

Ce qui précède est l'intégralité du contenu. de cet article. J'espère qu'il sera utile à l'apprentissage de tout le monde. Aide, veuillez faire attention au site Web PHP chinois pour plus de contenu connexe !
$Model->cache('cache_name')->select();

Recommandations associées :

$Model->cache(true,60,'xcache')->select();

ThinkPHP implémente la méthode de suppression du cache en un clic

$value = S('cache_name');

$Model->where($map)->cache('key',60)->find();
Un résumé de plusieurs façons de vider le cache dans 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:
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