ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP の静的キャッシュと動的キャッシュを実装する方法

ThinkPHP の静的キャッシュと動的キャッシュを実装する方法

墨辰丷
墨辰丷オリジナル
2018-05-23 11:23:051917ブラウズ

この記事では、静的キャッシュと動的キャッシュを実装するための 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表示永久缓存


静的ルール


Stat ic ルールが使用されます 名前を定義します静的ルールの定義では、競合が発生しないようにする必要があります。


システム変数を使用する

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


フレームワークでカスタマイズされた変数を使用する


コードをコピーする

コードは次のとおりです:

{:module}/{:controller}_{: action}/ /{:module}、{:controller}、および {:action} は、それぞれ現在のモジュール名、コントローラー名、操作名を表します。

_GET変数を使用



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


関数を直接使用


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


混合定義


すごい


動的キャッシュ


[S メソッド データ キャッシュ]


キャッシュの初期化

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


現在システムでサポートされているキャッシュ タイプには、Apachenote、Apc、Db、Eaccelerator、File、Memcache、Redis、Shmop、Sqlite、Wincache およびXキャッシュ。 S メソッドが初期化のために type パラメータを渡さない場合、構成ファイルに設定されている DATA_CACHE_TYPE パラメータ値がデフォルトのタイプとして読み取られます。同様に、prefix パラメータが渡されない場合は、設定ファイルの DATA_CACHE_PREFIX パラメータ値が読み取られます。expired パラメータが渡されない場合は、DATA_CACHE_TIME 設定値がデフォルトとして読み取られます。


グローバル キャッシュ方法の場合、混乱を避けるために、異なるアプリケーションを区別するためにプレフィックス (キャッシュ プレフィックス) パラメーターを追加することを一般的にお勧めします。

キャッシュを設定する

データキャッシュはキャッシュキューをサポートできます。簡単に言えば、初期化中に長さパラメータを指定するだけで済みます。

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


キャッシュを読む


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


: 各キャッシュを使用する場合、ThinkPHP は対応するドライバー ファイルをロードする必要があります。をクリックして、対応する構成を設定します。

使用例


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


システムは、より高速な操作のために高速キャッシュメソッドFも提供しますが、Fメソッドには有効期限がなく、Fメソッドはサポートできます。さまざまなストレージ タイプがファイル タイプの場合、デフォルトでは DATA_PATH ディレクトリに保存されます。


高速キャッシュデータ


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


[クエリキャッシュ]


クエリキャッシュ機能はすべてのデータベースをサポートし、すべてのキャッシュ方法と有効期間をサポートします。


クエリキャッシュを使用する場合、Modelクラスのcacheメソッドを呼び出すだけで済みます。


$Data = F('data');


cache(true)を使用すると、クエリ時に現在のクエリ条件やその他の情報に基づいて一意のIDを持つクエリキャッシュが生成されます(キーが指定されている場合)。キーという名前のキャッシュを直接クエリします。


F('data',NULL);


デフォルトでは、キャッシュ方法は DATA_CACHE_TYPE パラメータで設定されたキャッシュ方法を使用します (システムのデフォルト値は File で、これはファイル キャッシュが使用されることを意味します)。キャッシュの有効期間は、によって設定された時間です。 DATA_CACHE_TIME パラメータでは、クエリ キャッシュの方法と有効期間を個別に指定することもできます。


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


クエリキャッシュのキーを指定すると、クエリキャッシュの内容をSメソッドを通じて外部から直接取得できます。


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


select メソッドに加えて、クエリ キャッシュは find メソッドと getField メソッド、およびそれらの派生メソッド (統計クエリ メソッドと動的クエリ メソッドを含む) もサポートします。


りー

この記事は主に公式ドキュメントから引用しています。質問がある場合は、ThinkPHP3.2 公式ドキュメント - キャッシュを参照してください

以上がこの記事の全内容であり、皆様の学習に役立つことを願っています。


関連する推奨事項:

PHPソリューションをインポートするときに、MyAdmin がファイル サイズが PHP 制限を超えていることを示すプロンプトを表示する_javascript スキル

php 共通ページ ジャンプ方法 summary_javascript スキル

どうやってPHP と NodeJs で開発されたアプリケーションは Session_node.js を共有できますか

以上がThinkPHP の静的キャッシュと動的キャッシュを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。