Heim  >  Artikel  >  Backend-Entwicklung  >  Analyse der ThinkPHP-Implementierung von statischem Caching und dynamischem Caching

Analyse der ThinkPHP-Implementierung von statischem Caching und dynamischem Caching

不言
不言Original
2018-06-08 14:53:061496Durchsuche

In diesem Artikel wird hauptsächlich der Beispielcode von ThinkPHP zur Implementierung von statischem Caching und dynamischem Caching vorgestellt, der einen bestimmten Referenzwert hat. Interessierte Freunde können sich auf

Statisches Caching

Um die statische Caching-Funktion zu verwenden, müssen Sie den Parameter HTML_CACHE_ON aktivieren und die statische Caching-Regeldatei mithilfe des Konfigurationsparameters HTML_CACHE_RULES festlegen.

Statische Regeln definieren

'HTML_CACHE_ON'   =>  true, // 开启静态缓存
'HTML_CACHE_TIME'  =>  60,  // 全局静态缓存有效期(秒)
'HTML_FILE_SUFFIX' =>  '.shtml', // 设置静态缓存文件后缀
'HTML_CACHE_RULES' =>   array( // 定义静态缓存规则
   // 定义格式1 数组方式
   '静态地址'  =>   array('静态规则', '有效期', '附加规则'), 
   // 定义格式2 字符串方式
   '静态地址'  =>   '静态规则', 
)

Das Stammverzeichnis der statischen Cache-Datei befindet sich unter dem durch HTML_PATH definierten Pfad, und nur Vorgänge mit definierten statischen Regeln werden statisch zwischengespeichert. Und der statische Cache unterstützt verschiedene Speichertypen. Statisches Caching funktioniert nur bei GET-Anfragen.


Statische Adresse

Statische Regeln für den globalen Betrieb

'read'=>array('{id}',60)//定义所有的read操作的静态规则

Definition der statischen Regeln des globalen Controllers

'user:'=>array('User/{:action}_{id}','600')//定义所有的User控制器的静态规则

Definition statischer Regeln für den Betrieb eines bestimmten Controllers // Definieren Sie den Lesevorgang des Blog-Controllers für statisches Caching

'blog:read'=>array('{id}',0)//参数为0表示永久缓存

Definieren Sie globale statische Caching-Regeln

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

Statische Regeln

Statische Regeln werden verwendet, um die Namen der zu generierenden statischen Dateien zu definieren. Die Definition statischer Regeln muss sicherstellen, dass es zu keinen Konflikten kommt.


Systemvariablen verwenden

{$_×××|function}//_GET、_REQUEST、_SERVER、_SESSION、_COOKIE
{$_GET.name} 
{$_SERVER.REQUEST_URI|md5}

Framework-angepasste Variablen verwenden

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

_GET-Variablen verwenden

{var|function}//{id}其实等效于 {$_GET.id}

Funktionen direkt verwenden

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

Gemischte Definition

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

Dynamischer Cache

[S-Methoden-Datencache]

Cache-Initialisierung

S(array('type'=>'xcache','expire'=>60));

Das System wird derzeit unterstützt Zu den Cache-Typen gehören: Apachenote, Apc, Db, Eaccelerator, File, Memcache, Redis, Shmop, Sqlite, Wincache und Xcache. Wenn die S-Methode den Typparameter nicht zur Initialisierung übergibt, wird der in der Konfigurationsdatei festgelegte Parameterwert DATA_CACHE_TYPE als Standardtyp gelesen. Wenn der Präfixparameter nicht übergeben wird, wird auf die gleiche Weise der Parameterwert DATA_CACHE_PREFIX der Konfigurationsdatei gelesen. Wenn der Ablaufparameter nicht übergeben wird, wird der Konfigurationswert DATA_CACHE_TIME als Standard gelesen.


Für globales Caching empfehlen wir generell das Hinzufügen des Parameters Präfix (Cache-Präfix), um verschiedene Anwendungen zu unterscheiden und Verwirrung zu vermeiden.

Cache festlegen


Der Datencache kann die Cache-Warteschlange unterstützen. Einfach ausgedrückt können Sie die Anzahl der Caches begrenzen. Sie müssen nur den Längenparameter angeben.

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条缓存数据。

Cache lesen

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

Cache löschen

S('name',null);

Hinweis: Bei Verwendung jedes Caches muss ThinkPHP die entsprechende Treiberdatei laden und die entsprechende Konfiguration festlegen.

Verwendungsbeispiel

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

[Schneller Cache]

Das System bietet auch eine schnelle Cache-Methode F für schnellere Vorgänge, die F-Methode verfügt jedoch über Kein Gültigkeitszeitraum. Die F-Methode kann verschiedene Speichertypen unterstützen. Wenn es sich um einen Dateityp handelt, wird er standardmäßig im Verzeichnis DATA_PATH gespeichert.


Daten schnell zwischenspeichern

F('data',$Data);
F('data',$Data,TEMP_PATH);//快速缓存Data数据,保存到指定的目录
F('User/data',$Data);//F方法支持自动创建缓存子目录,在DATA_PATH目录下面缓存data数据,如果User子目录不存在,则自动创建。

Zwischengespeicherte Daten abrufen

$Data = F('data');

Gespeicherte Daten löschen

F('data',NULL);

[Abfrage-Cache]

Die Abfrage-Cache-Funktion unterstützt alle Datenbanken sowie alle Caching-Methoden und Gültigkeitszeiträume.


Wenn Sie den Abfrage-Cache verwenden, müssen Sie nur die Cache-Methode der Model-Klasse aufrufen.

$Model->cache(true)->where('status=1')->select();

Wenn „cache(true)“ verwendet wird, wird ein Abfragecache mit einer eindeutigen Kennung basierend auf den aktuellen Abfragebedingungen und anderen Informationen während der Abfrage generiert. Wenn ein Schlüssel angegeben wird, wird der Name des Schlüssels generiert direkt generiert werden.

$Model->cache('cache_name')->select();

Standardmäßig verwendet die Cache-Methode die durch den Parameter DATA_CACHE_TYPE festgelegte Cache-Methode (der Systemstandardwert ist File, was bedeutet, dass der Datei-Cache verwendet wird. Der Cache-Gültigkeitszeitraum ist die durch den Parameter DATA_CACHE_TIME festgelegte Zeit). . Die Cache-Methode des Abfragecaches kann auch separat angegeben werden.

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

Wenn der Abfrage-Cache-Schlüssel angegeben ist, kann der Abfrage-Cache-Inhalt direkt extern über die S-Methode abgerufen werden.

$value = S('cache_name');

Zusätzlich zur Select-Methode unterstützt der Abfrage-Cache auch die Methoden find und getField sowie deren abgeleitete Methoden (einschließlich statistischer Abfrage- und dynamischer Abfragemethoden).

$Model->where($map)->cache('key',60)->find();

Dieser Artikel stammt hauptsächlich aus der offiziellen Dokumentation. Wenn Sie Fragen haben, lesen Sie bitte die offizielle Dokumentation zu ThinkPHP3.2 – Cache


Das Obige ist der gesamte Inhalt Ich hoffe, dass er für das Studium aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

ThinkPHP implementiert die Ein-Klick-Cache-Löschmethode

Eine Zusammenfassung verschiedener Möglichkeiten zum Löschen des Caches PHP

Das obige ist der detaillierte Inhalt vonAnalyse der ThinkPHP-Implementierung von statischem Caching und dynamischem Caching. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn