この記事では主に静的キャッシュと動的キャッシュを実装するための ThinkPHP のサンプル コードを紹介します。興味のある方は参考にしてください。
静的キャッシュ
静的キャッシュ機能を使用するには、HTML_CACHE_ON パラメータを有効にし、HTML_CACHE_RULES 構成パラメータを使用して静的キャッシュ ルール ファイルを設定する必要があります。
静的ルールの定義
'HTML_CACHE_ON' => true, // 开启静态缓存 'HTML_CACHE_TIME' => 60, // 全局静态缓存有效期(秒) 'HTML_FILE_SUFFIX' => '.shtml', // 设置静态缓存文件后缀 'HTML_CACHE_RULES' => array( // 定义静态缓存规则 // 定义格式1 数组方式 '静态地址' => array('静态规则', '有效期', '附加规则'), // 定义格式2 字符串方式 '静态地址' => '静态规则', )
静的キャッシュ ファイルのルート ディレクトリは HTML_PATH で定義されたパスの下にあり、静的ルールを定義する操作のみが静的にキャッシュされます。また、静的キャッシュはさまざまなストレージ タイプをサポートします。静的キャッシュは GET リクエストでのみ機能します。
静的アドレス
グローバル操作の静的ルール
'read'=>array('{id}',60)//定义所有的read操作的静态规则
グローバル コントローラーの静的ルールの定義
'user:'=>array('User/{:action}_{id}','600')//定义所有的User控制器的静态规则
定義静的ルール特定のコントローラーの操作用 //静的キャッシュ用のブログ コントローラーの読み取り操作を定義します
'blog:read'=>array('{id}',0)//参数为0表示永久缓存
グローバル静的キャッシュ ルールを定義します
'*'=>array('{$_SERVER.REQUEST_URI|md5}')//这个属于特殊情况下的使用,任何模块的操作都适用
静的ルール
#静的ルールは、生成される静的ファイルの名前を定義するために使用されます。静的ルールの定義では、競合が発生しないようにする必要があります。{$_×××|function}//_GET、_REQUEST、_SERVER、_SESSION、_COOKIE {$_GET.name} {$_SERVER.REQUEST_URI|md5}
{:module}/{:controller}_{:action}//{:module} 、{:controller} 和{:action}分别表示当前模块名、控制器名和操作名。
{var|function}//{id}其实等效于 {$_GET.id}
{|function}//{|time},time函数获取时间后作为文件名称
'{id},{name|md5}' //在{}之外的字符作为字符串对待,如果包含有"/",会自动创建目录。 {:module}/{:action}_{id}//会在静态目录下面创建模块名称的子目录,然后写入操作名_id.shtml 文件。
動的キャッシュ
[Sメソッドデータキャッシュ]キャッシュ初期化S(array('type'=>'xcache','expire'=>60));
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条缓存数据。
$value = S('name');//如果缓存标识不存在或者已经过期,则返回false,否则返回缓存值。
S('name',null);
$user = M('User'); $value = S('list'); if (empty($value)) { $list = $user->select(); S('list', $list, 3600); echo '这个是直接从数据库中读取的文件'; dump($list); } else { echo '这个是缓存文件'; dump($value); }
[クイック キャッシュ]
システムは、処理を高速化するための高速キャッシュ メソッド F も提供します。ただし、F メソッドには、有効期間はありません。F メソッドはさまざまなストレージ タイプをサポートします。ファイル タイプの場合は、デフォルトで DATA_PATH ディレクトリに保存されます。F('data',$Data); F('data',$Data,TEMP_PATH);//快速缓存Data数据,保存到指定的目录 F('User/data',$Data);//F方法支持自动创建缓存子目录,在DATA_PATH目录下面缓存data数据,如果User子目录不存在,则自动创建。
$Data = F('data');
F('data',NULL);
[クエリ キャッシュ]
クエリ キャッシュ機能はすべてのデータベースをサポートし、すべてのキャッシュ方法と有効期間をサポートします。$Model->cache(true)->where('status=1')->select();
$Model->cache('cache_name')->select();
$Model->cache(true,60,'xcache')->select();
$value = S('cache_name');
$Model->where($map)->cache('key',60)->find();
ThinkPHP はワンクリックでキャッシュをクリアする方法を実装します
以上がThinkPHP の静的キャッシュと動的キャッシュの実装に関する分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。