Maison > développement back-end > tutoriel php > Cache ThinkPHP cache rapide et cache dynamique

Cache ThinkPHP cache rapide et cache dynamique

不言
Libérer: 2023-03-30 22:00:01
original
2063 Les gens l'ont consulté

La méthode F de thinkPHP ne peut être utilisée que pour mettre en cache des types de données simples et ne prend pas en charge les périodes de validité et les objets mis en cache. La méthode de cache S() prend en charge la période de validité, également appelée méthode de cache dynamique. Cet article est la compilation quotidienne de l'éditeur des méthodes de mise en cache thinkphp. Les amis intéressés par les méthodes de mise en cache thinkphp devraient apprendre ensemble

La méthode de mise en cache par défaut du système est la mise en cache de fichiers. Nous pouvons définir d'autres caches dans le fichier de configuration du projet. . Méthode, par exemple, modifiez la méthode de mise en cache par défaut en Xcache (bien sûr, votre environnement doit prendre en charge Xcache)

Pour le problème d'un grand nombre de fichiers dans le répertoire de cache sous la mise en cache en mode fichier dû également à beaucoup de données mises en cache, ThinkPHP Une solution est également proposée pour activer la mise en cache du sous-répertoire de hachage.

    'DATA_CACHE_SUBDIR'=>true
Copier après la connexion

Vous pouvez également définir le niveau du répertoire de hachage. Par exemple,

    'DATA_PATH_LEVEL'=>2
Copier après la connexion

peut créer automatiquement des sous-répertoires à plusieurs niveaux pour la mise en cache en fonction du hachage de l'identifiant du cache.

La méthode S prend en charge la période de validité du cache. Dans de nombreux cas, nous n'avons peut-être pas besoin du concept de période de validité, ou le cache en mode fichier peut répondre aux exigences, le système fournit donc également un cache rapide spécifiquement pour le mode fichier. Méthode de cache Méthode F. La méthode F ne peut être utilisée que pour mettre en cache des types de données simples et ne prend pas en charge les périodes de validité ni les objets de cache. Utilisez ce qui suit :

 //快速缓存Data数据,默认保存在DATA_PATH目录下面    
      F('data',$data);
    //快速缓存Data数据,保存到指定的目录   
      F('data',$data,TEMP_PATH);
      F('user/data',$data);
    //删除缓存数据
      F('data',null);
    //获取缓存数据
      $data=F('data');
Copier après la connexion

Fichier de configuration config.php

//动态缓存,缓存文件存在于\Runtime\Temp
'DATA_CACHE_TYPE'=>'file',
'DATA_CACHE_TIME'=>'3600',
//'DATA_CACHE_SUBDIR'=>true,//开启子目录
//'DATA_CACHE_LEVEL'=>3,//设置子目录的层次
Copier après la connexion
.

Fichier d'action :

 function view(){
    //缓存
    //$cache=Cache::getInstance('缓存方式','缓存参数');
    //$cache=Cache::getInstance('Xcache',array('expire'=>60));
    //$cache->set('名字','值');或者$cache->name='值';
    //$value=$cache->get('名字');或者$value=$cache->name;
    //$cache->rm('名字');或者unset($cache->name);
    //S('名字','数据','3600','类型')缓存快捷方法
    $user=M('haodetong');
    $value=S('list');
    if(empty($value)){
      $list=$user->select();
      S('list',$list,3600);
      echo '这个是直接从数据库中读取的文件';  
      dump($list);
    }else{
      echo '这个是缓存文件';
      dump($value);
    }
  }
Copier après la connexion

Comme indiqué ci-dessous lors de la première visite :

Après avoir actualisé à nouveau, comme indiqué ci-dessous :

Ce qui suit est une introduction distincte à la mise en cache rapide de la méthode F dans ThinkPHP

Utilisation de la mise en cache de fichiers peut répondre aux exigences, le système fournit donc également une méthode F de mise en cache rapide dédiée pour le fichier

$path="../Public/Runtime/";
$str="asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa";
F("str/andy",$str,$path);
Copier après la connexion

Cela place le contenu de la chaîne $str dans le fichier de ../Public/Runtime/str/andy .php

Le contenu du fichier andy.php est le suivant :

<?php
return &#39;asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa&#39;;
?>
Copier après la connexion

Le code suivant est un aperçu de la méthode de mise en cache ThinkPHP S()

thinkPHP La méthode F ne peut être utilisée que pour mettre en cache des types de données simples et ne prend pas en charge l'expiration et le cache des objets. La méthode de cache S() prend en charge la période de validité, également appelée méthode de cache dynamique. L'exemple d'utilisation est le suivant :

Le code est le suivant :

// 使用data标识缓存$Data数据
S(&#39;data&#39;,$Data);  //前面的是缓存标示,后面的是缓存的数据
Copier après la connexion

Le code est le suivant. :

// 缓存$Data数据3600秒
S(&#39;data&#39;,$Data,3600);
Copier après la connexion

Le code est le suivant :

// 删除缓存数据
S(&#39;data&#39;,NULL);  //第一个参数时缓存的标识名
Copier après la connexion

Le code est le suivant :

$cache=S($cachename);//设置缓存标示
// 判断是否有这个查询缓存  
if(!$cache){ //$cache 中是缓存的标示(每个查询都对应一个缓存 即 不同的查询有不同的缓存)
  $cache=$video->where($map)->order($order)->limit($limit)->select();
  foreach($cache as $key=>$value){
  $userlist=$user->where("id=".$value[&#39;user_id&#39;])->find();
  $cache[$key]["nickname"]=$userlist[&#39;nickname&#39;];
  }
  S($cachename,$cache,3600); //设置缓存的生存时间 
  }
  S($cachename,NULL); //删除缓存
Copier après la connexion

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de tout le monde. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Analyse sur la mise en œuvre par ThinkPHP de la mise en cache statique et de la mise en cache dynamique

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!

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