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

Cache ThinkPHP cache rapide et cache dynamique

不言
不言original
2018-06-08 17:09:152007parcourir

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

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

    'DATA_PATH_LEVEL'=>2

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');

Fichier de configuration config.php

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

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);
    }
  }

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);

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;;
?>

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);  //前面的是缓存标示,后面的是缓存的数据

Le code est le suivant. :

// 缓存$Data数据3600秒
S(&#39;data&#39;,$Data,3600);

Le code est le suivant :

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

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); //删除缓存

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!

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