ホームページ PHPフレームワーク ThinkPHP thinkphp にはどのようなキャッシュ タイプがありますか?

thinkphp にはどのようなキャッシュ タイプがありますか?

Aug 22, 2019 pm 01:43 PM
thinkphp キャッシュタイプ

thinkphp にはどのようなキャッシュ タイプがありますか?

ThinkPHP は、データ キャッシュ、静的キャッシュ、クエリ キャッシュなどの便利なキャッシュ方法を提供し、ファイル モード、APC、Db、Memcache、Shmop、動的データ キャッシュをサポートしています。 Sqlite、Redis、Eaccelerator、Xcache などのタイプと、カスタマイズ可能な静的キャッシュ ルールは、アクセス操作のショートカット メソッドを提供します。

データ キャッシュ

Thinkphp キャッシュ ファイルの構成

Home は私が作成したフロントエンド プロジェクトで、キャッシュは Home\Conf\ にあります。

<?php   
   return array(       
   &#39;DB_TYPE&#39;=>&#39;mysql&#39;,       
   &#39;DB_HOST&#39;=>&#39;127.0.0.1&#39;,       
  &#39;DB_NAME&#39;=>&#39;w3note&#39;,       
   &#39;DB_USER&#39;=>&#39;root&#39;,       
  &#39;DB_PWD&#39;=>&#39;123456&#39;,       
  &#39;DB_PORT&#39;=>&#39;3306&#39;,       
  &#39;DB_PREFIX&#39;=>&#39;w3_&#39;,       
  &#39;DATA_CACHE_TYPE&#39;=>&#39;file&#39;,//设置缓存方式为file       
  &#39;DATA_CACHE_TIME&#39;=>&#39;600&#39;,//缓存周期600秒       
 );       
 ?>
ログイン後にコピー

Thinkphp キャッシュ関数の使い方

thinkphp では、ショートカット キャッシュ関数 S() を使ってキャッシュを行います。

S(&#39;data&#39;,$Data);//使用data标识缓存$Data数据  
S(&#39;data&#39;,$Data,600);// 缓存$Data数据600秒  
 $Data = S(&#39;data&#39;);// 获取缓存数据  
S(&#39;data&#39;,NULL);// 删除缓存数据
ログイン後にコピー

デモの例

<?php       
 // 本类由系统自动生成,仅供测试用途       
  class IndexAction extends Action{       
    public function index(){       
        //如果有缓存,则读取缓存数据       
        //如果没有缓存,则读取数据库当中的数据放入缓存       
        $lists=S(&#39;lists&#39;);                     
        if(emptyempty($lists)){                           
          $news=M(&#39;news&#39;);   
          $lists=$news->select();   
          S(&#39;lists&#39;,$lists,600);   
          echo &#39;这是直接读取数据库的数据&#39;;       
           }   
        dump($list);  
 ?>
ログイン後にコピー

http://127.0.0.1/Home/index.php/Index/index にアクセスしてください、

最初の訪問:

これはデータベースを直接読み取るためのものです。 データ

array(10) {  
   [0] => array(12) {  
     ["id"] => string(1) "1"  
     ["catid"] => string(2) "13"  
     ["title"] => string(4) "thinkphp的缓存技术"  
     ["content"] => string(8) "thinkphp的缓存技术"  
     ["tags"] => string(4) "缓存"  
     ["thumb"] => string(0) ""  
     ["description"] => string(7) "thinkphp的缓存技术"  
     ["inputtime"] => string(10) "1348370202"  
     ["posid"] => string(1) "1"  
     ["ord"] => string(1) "2"  
     ["hits"] => string(1) "1"  
     ["status"] => string(1) "1"  
 }
ログイン後にコピー
ログイン後にコピー

2回目の訪問:

array(10) {  
   [0] => array(12) {  
     ["id"] => string(1) "1"  
     ["catid"] => string(2) "13"  
     ["title"] => string(4) "thinkphp的缓存技术"  
     ["content"] => string(8) "thinkphp的缓存技术"  
     ["tags"] => string(4) "缓存"  
     ["thumb"] => string(0) ""  
     ["description"] => string(7) "thinkphp的缓存技术"  
     ["inputtime"] => string(10) "1348370202"  
     ["posid"] => string(1) "1"  
     ["ord"] => string(1) "2"  
     ["hits"] => string(1) "1"  
     ["status"] => string(1) "1"  
 }
ログイン後にコピー
ログイン後にコピー

注: 初めて実行するときは、上記の情報が出力されます。ページを更新した後は、何も表示されません。 「これは直接読み取りです」「データベースからデータを取得します」。以前に生成されたキャッシュ データが読み取られることを示します。

関連する推奨事項: 「ThinkPHP チュートリアル

クイック キャッシュ

一部のファイルをキャッシュしたい場合。単純な場合データが保存され、有効期間の概念がないため、システムは、より高速な操作を実現するための高速キャッシュ方式 F も提供します。

F(&#39;data&#39;,$Data);
ログイン後にコピー

データ データをすばやくキャッシュし、デフォルトで DATA_PATH ディレクトリに保存します。

F(&#39;data&#39;,$Data,TEMP_PATH);
ログイン後にコピー

データ データをすばやくキャッシュし、指定したディレクトリに保存します。

$Data = F(&#39;data&#39;);
ログイン後にコピー

キャッシュされたデータを取得します

F(&#39;data&#39;,NULL);
ログイン後にコピー

キャッシュされたデータの削除

F(&#39;User/data&#39;,$Data);
ログイン後にコピー

F メソッドは、キャッシュ サブディレクトリの自動作成をサポートし、DATA_PATH ディレクトリの下にデータ データをキャッシュします。User サブディレクトリが存在しない場合は、自動的に作成されます:

F(&#39;User/*&#39;,NULL);
ログイン後にコピー

3.1.2 バージョン Start F メソッドは、次のワイルドカード文字を使用したバッチ削除機能をサポートしています。

&#39;DATA_CACHE_TIME&#39;   => 60, // 数据缓存有效期 0表示永久缓存
&#39;DATA_CACHE_TYPE&#39;   => &#39;File&#39;,
 // 数据缓存类型,支持:File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator
&#39;DB_SQL_BUILD_CACHE&#39; => true,
&#39;DB_SQL_BUILD_LENGTH&#39; => 20, // SQL缓存的队列长度
&#39;DATA_CACHE_PATH&#39; => TEMP_PATH,
ログイン後にコピー

は、DATA_PATH.'User/' ディレクトリの下のデータ キャッシュを削除することを意味します。

システムの組み込みデータ フィールド情報キャッシュは、高速キャッシュ メカニズムを使用します。

クエリ キャッシュ

高い適時性を必要としないデータ クエリの場合、クエリ キャッシュ機能を使用してパフォーマンスを向上させることができ、キャッシュ方法を使用する必要はありません。自分自身でキャッシュと取得を行うためです。

APP/config.php 設定:

$Model->cache(true)->select();
ログイン後にコピー

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

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

$Model->cache(true,60,&#39;xcache&#39;)->select();
ログイン後にコピー

cache(true) が使用される場合、現在のクエリ SQL が処理されます。クエリ中。クエリ キャッシュを生成します。デフォルトでは、キャッシュ メソッドは DATA_CACHE_TYPE パラメータで設定されたキャッシュ メソッドを使用します (システムのデフォルト値は File で、ファイル キャッシュが使用されることを意味します)。キャッシュの有効期間は、DATA_CACHE_TIME パラメータで設定された時間です。クエリ キャッシュのキャッシュ メソッドと有効期間は個別に指定することもできます:

$Model->cache(&#39;cache_name&#39;,60)->select();
ログイン後にコピー

は、現在のクエリ キャッシュのキャッシュ メソッドが xcache で、キャッシュの有効期間が 60 秒であることを示します。

同じクエリで、cache メソッドが使用されていない場合は、Cache メソッドが以前に呼び出されていたとしても、キャッシュは取得または生成されません。

クエリ キャッシュは内部呼び出し専用です。クエリ キャッシュを他のプログラムに公開したい場合は、クエリ キャッシュのキーを指定できます。例:

$value = S(&#39;cache_name&#39;);
ログイン後にコピー

S メソッドを通じて外部からクエリ キャッシュを直接取得します。コンテンツ、

&#39;DB_SQL_BUILD_CACHE&#39; => true,
ログイン後にコピー

select メソッドに加えて、クエリ キャッシュは、find メソッドと getField メソッド、およびそれらの派生メソッド (統計クエリと動的クエリを含む) もサポートしています。クエリメソッド)。特定のアプリケーションについては、ニーズに応じてキャッシュ方法とキャッシュの有効期間を選択できます。

SQL 解析キャッシュ

クエリ キャッシュに加えて、ThinkPHP は SQL 解析キャッシュもサポートしています。ThinkPHP の ORM メカニズムにより、すべての SQL は動的に生成され、実行されます。データベースドライバー。

したがって、アプリケーションに多数の SQL クエリ要件がある場合は、SQL 解析キャッシュを有効にして SQL 解析を減らし、パフォーマンスを向上させることができます。 SQL 解析キャッシュを有効にするには、次の設定を行うだけです:

&#39;DB_SQL_BUILD_QUEUE&#39; => &#39;xcache&#39;,
ログイン後にコピー

を設定して、データベース クエリの SQL 作成キャッシュを有効にします。デフォルトのキャッシュ方法はファイル モードです。xcache および apc キャッシュもサポートされています。設定する必要があるのは、設定することだけです:

&#39;DB_SQL_BUILD_LENGTH&#39; => 20, // SQL缓存的队列长度
ログイン後にコピー

プロジェクトの SQL クエリの量が非常に膨大になる可能性があることがわかっているため、キャッシュ キューの長さを設定する必要があります。たとえば、SQL 解析キャッシュが 20 を超えないようにする場合、

&#39;HTML_CACHE_ON&#39; => true, // 开启静态缓存
&#39;HTML_CACHE_TIME&#39; => 60, // 全局静态缓存有效期(秒)
&#39;HTML_FILE_SUFFIX&#39; => &#39;.shtml&#39;, // 设置静态缓存文件后缀
&#39;HTML_CACHE_RULES&#39; => array( // 定义静态缓存规则
 // 定义格式1 数组方式
 &#39;静态地址&#39; => array(&#39;静态规则&#39;, &#39;有效期&#39;, &#39;附加规则&#39;), 
 // 定义格式2 字符串方式
 &#39;静态地址&#39; => &#39;静态规则&#39;, 
)
ログイン後にコピー

注: SQL 解析キャッシュをサポートするのはクエリ メソッドのみです

静的キャッシュ

静的キャッシュ関数を使用するには、 HTML_CACHE_ON パラメータを有効にし、HTML_CACHE_RULES 構成パラメータを使用して静的キャッシュ ルール ファイルを設定する必要があります。

静的キャッシュ ルールはアプリケーション構成ファイルで定義することもできますが、モジュール構成ファイルでさまざまなモジュールの静的キャッシュ ルールを定義することをお勧めします。

静的ルールの定義

静的ルールの定義は次のとおりです。

&#39;read&#39;=>array(&#39;{id}&#39;,60)
ログイン後にコピー
ログイン後にコピー

定義形式 1 では、さまざまな静的ルールの設定を容易にするために配列を使用します。有効期間、定義形式 2 は、文字列モードを使用して静的ルールをサブスクライブし、HTML_CACHE_TIME で設定されたグローバル静的キャッシュ有効期間を使用します。

静态缓存文件的根目录在HTML_PATH定义的路径下面,并且只有定义了静态规则的操作才会进行静态缓存。 并且静态缓存支持不同的存储类型。 静态缓存仅在GET请求下面有效。

静态地址

静态地址包括下面几种定义格式:

第一种是定义全局的操作静态规则,例如定义所有的read操作的静态规则为:

&#39;read&#39;=>array(&#39;{id}&#39;,60)
ログイン後にコピー
ログイン後にコピー

其中,{id}

表示取$_GET['id']

为静态缓存文件名,第二个参数表示缓存60秒。

第二种是定义全局的控制器静态规则,例如定义所有的User控制器的静态规则为:

&#39;user:&#39;=>array(&#39;User/{:action}_{id}&#39;,&#39;600&#39;)
ログイン後にコピー

其中,{:action}

表示当前的操作名称

第三种是定义某个控制器的操作的静态规则,例如,我们需要定义Blog控制器的read操作进行静态缓存

&#39;blog:read&#39;=>array(&#39;{id}&#39;,0)
ログイン後にコピー

第四种方式是定义全局的静态缓存规则,这个属于特殊情况下的使用,任何模块的操作都适用,例如:

&#39;*&#39;=>array(&#39;{$_SERVER.REQUEST_URI|md5}&#39;),
ログイン後にコピー

表示根据当前的URL进行缓存。

静态规则

静态规则是用于定义要生成的静态文件的名称,静态规则的定义要确保不会冲突,写法可以包括以下情况:

1.使用系统变量

包括 _GET、_REQUEST、_SERVER、_SESSION、_COOKIE

格式:

{$_×××|function}
ログイン後にコピー

例如:

{$_GET.name} 
{$_SERVER.REQUEST_URI|md5}
ログイン後にコピー

2.使用框架特定的变量

{:module} 、{:controller} 和{:action}
ログイン後にコピー

分别表示当前模块名、控制器名和操作名。

例如:

{:module}/{:controller}_{:action}
ログイン後にコピー

3.使用_GET变量

{var|function}也就是说 {id}其实等效于 {$_GET.id}

4.直接使用函数

{|function} 例如:{|time}

5.支持混合定义

例如我们可以定义一个静态规则为:

&#39;{id},{name|md5}&#39;
ログイン後にコピー

在{}之外的字符作为字符串对待,如果包含有"/",会自动创建目录。

例如,定义下面的静态规则:

{:module}/{:action}_{id}
ログイン後にコピー

则会在静态目录下面创建模块名称的子目录,然后写入操作名_id.shtml 文件。

静态缓存有效期

单位为秒。如果不定义,则会获取配置参数HTML_CACHE_TIME的设置值,如果定义为0则表示永久缓存。

附加规则

通常用于对静态规则进行函数运算,例如:

&#39;read&#39;=>array(&#39;Think{id},{name}&#39;,&#39;60&#39;, &#39;md5&#39;)
ログイン後にコピー

翻译后的静态规则是

md5(&#39;Think&#39;.$_GET[&#39;id&#39;]. &#39;, &#39;.$_GET[&#39;name&#39;]);
ログイン後にコピー

以上がthinkphp にはどのようなキャッシュ タイプがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

thinkphpプロジェクトの実行方法 thinkphpプロジェクトの実行方法 Apr 09, 2024 pm 05:33 PM

ThinkPHP プロジェクトを実行するには、Composer をインストールし、Composer を使用してプロジェクトを作成し、プロジェクト ディレクトリに入り、php bin/consoleserve を実行し、http://localhost:8000 にアクセスしてようこそページを表示する必要があります。

thinkphp にはいくつかのバージョンがあります thinkphp にはいくつかのバージョンがあります Apr 09, 2024 pm 06:09 PM

ThinkPHP には、さまざまな PHP バージョン向けに設計された複数のバージョンがあります。メジャー バージョンには 3.2、5.0、5.1、および 6.0 が含まれますが、マイナー バージョンはバグを修正し、新機能を提供するために使用されます。最新の安定バージョンは ThinkPHP 6.0.16 です。バージョンを選択するときは、PHP バージョン、機能要件、コミュニティ サポートを考慮してください。最高のパフォーマンスとサポートを得るには、最新の安定バージョンを使用することをお勧めします。

thinkphpの実行方法 thinkphpの実行方法 Apr 09, 2024 pm 05:39 PM

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構成します。 Webサーバーを起動します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

laravelとthinkphpではどちらが優れていますか? laravelとthinkphpではどちらが優れていますか? Apr 09, 2024 pm 03:18 PM

Laravel フレームワークと ThinkPHP フレームワークのパフォーマンスの比較: ThinkPHP は、最適化とキャッシュに重点を置いて、一般に Laravel よりもパフォーマンスが優れています。 Laravel は優れたパフォーマンスを発揮しますが、複雑なアプリケーションの場合は、ThinkPHP の方が適している可能性があります。

開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法 開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法 Nov 22, 2023 pm 12:01 PM

「開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法」 インターネット技術の急速な発展に伴い、Web アプリケーションには、多数の同時リクエストと複雑なビジネス ロジックを処理するための要件が​​ますます高まっています。システムのパフォーマンスとユーザー エクスペリエンスを向上させるために、開発者は多くの場合、電子メールの送信、ファイルのアップロードの処理、レポートの生成など、時間のかかる操作を実行するために非同期タスクの使用を検討します。 PHP の分野では、人気のある開発フレームワークとして ThinkPHP フレームワークが、非同期タスクを実装するための便利な方法をいくつか提供しています。

thinkphpのインストール方法 thinkphpのインストール方法 Apr 09, 2024 pm 05:42 PM

ThinkPHP のインストール手順: PHP、Composer、および MySQL 環境を準備します。 Composer を使用してプロジェクトを作成します。 ThinkPHP フレームワークと依存関係をインストールします。データベース接続を構成します。アプリケーションコードを生成します。アプリケーションを起動し、http://localhost:8000 にアクセスします。

thinkphpのパフォーマンスはどうですか? thinkphpのパフォーマンスはどうですか? Apr 09, 2024 pm 05:24 PM

ThinkPHP は、キャッシュ メカニズム、コードの最適化、並列処理、データベースの最適化などの利点を備えた高性能 PHP フレームワークです。公式パフォーマンステストでは、1秒あたり10,000以上のリクエストを処理できることが示されており、実際のアプリケーションではJD.comやCtripなどの大規模なWebサイトやエンタープライズシステムで広く使用されています。

開発に関する提案: API 開発に ThinkPHP フレームワークを使用する方法 開発に関する提案: API 開発に ThinkPHP フレームワークを使用する方法 Nov 22, 2023 pm 05:18 PM

開発の提案: API 開発に ThinkPHP フレームワークを使用する方法 インターネットの継続的な発展に伴い、API (アプリケーション プログラミング インターフェイス) の重要性がますます高まっています。 API は、異なるアプリケーション間の通信の橋渡しとなるもので、データの共有や関数の呼び出しなどを実現し、開発者に比較的簡単かつ迅速な開発手法を提供します。優れた PHP 開発フレームワークである ThinkPHP フレームワークは、効率的でスケーラブルで使いやすいです。

See all articles