Yii-caching
Yii-キャッシング
キャッシングは、アプリケーションのパフォーマンスを向上させる効果的な方法です。 キャッシュメカニズムは、静的データをキャッシュに保存し、要求されたときにキャッシュから取得します。 サーバー側では、キャッシュを使用して、最新のニュースのリストなどの基本データを保存できます。 ページフラグメントまたはWebページ全体を保存することもできます。 クライアント側では、HTTPキャッシュを使用して、最近アクセスしたページをブラウザーキャッシュに保持できます。
DBの準備
- ステップ1 *-新しいデータベースを作成します。 データベースは、次の2つの方法で準備できます。
- ターミナルで_mysql -u root –p_を実行します
. * _CREATE DATABASE helloworld CHARACTER SET utf8 COLLATE utf8_general_ci; _を介して新しいデータベースを作成します
ステップ2 *- *config/db.php ファイルでデータベース接続を設定します。 次の構成は、現在使用されているシステム用です。
ステップ3 *-ルートフォルダー内で./yii migrate/create test_table *を実行します。 このコマンドは、DBを管理するためのデータベース移行を作成します。 移行ファイルは、プロジェクトルートの *migrations フォルダーに表示されます。
ステップ4 *-この方法で移行ファイル(この場合は *m160106_163154_test_table.php )を変更します。
上記の移行では、id、name、およびemailのフィールドを持つ user テーブルが作成されます。 また、いくつかのデモユーザーを追加します。
- ステップ5 *-プロジェクトのルート内で./yii migrate *を実行して、データベースに移行を適用します。
ステップ6 *-次に、 *user テーブルのモデルを作成する必要があります。 簡単にするために、 Gii コード生成ツールを使用します。 この url:http://localhost:8080/index.php?r = gii を開きます。 次に、「Model generator」ヘッダーの下にある「Start」ボタンをクリックします。 テーブル名(「ユーザー」)とモデルクラス(「MyUser」)を入力し、「プレビュー」ボタンをクリックして、最後に「生成」ボタンをクリックします。
MyUserモデルがモデルディレクトリに表示されます。
データキャッシング
- データキャッシングは、PHP変数をキャッシュに保存し、後で取得するのに役立ちます。 データキャッシングは、通常はアプリケーションコンポーネントとして登録されるキャッシュコンポーネントに依存しています。 アプリケーションコンポーネントにアクセスするには、 *Yii
- $ app→cache* を呼び出します。 複数のキャッシュアプリケーションコンポーネントを登録できます。
Yiiは次のキャッシュストレージをサポートしています-
- yii \ caching \ DbCache-データベーステーブルを使用して、キャッシュされたデータを保存します。 Uouは、yii \ caching \ DbCache :: $ cacheTableで指定されたテーブルを作成する必要があります。
- yii \ caching \ ApcCache-PHP APC拡張を使用します。
- yii \ caching \ FileCache-ファイルを使用してキャッシュされたデータを保存します。
- yii \ caching \ DummyCache-実際のキャッシングを行わないキャッシュプレースホルダーとして機能します。 このコンポーネントの目的は、キャッシュの可用性を確認する必要があるコードを簡素化することです。
- yii \ caching \ MemCache-PHP memcache拡張を使用します。
- yii \ caching \ WinCache-PHP WinCache拡張機能を使用します。
- yii \ redis \ Cache-Redisデータベースに基づいてキャッシュコンポーネントを実装します。
- yii \ caching \ XCache-PHP XCache拡張を使用します。
すべてのキャッシュコンポーネントは、次のAPIをサポートしています-
- get()-指定されたキーでキャッシュからデータ値を取得します。 データ値が期限切れ/無効化されているか、見つからない場合は、偽の値が返されます。
- add()-キーがキャッシュ内に見つからない場合、キーによって識別されるデータ値をキャッシュに保存します。
- set()-キーで識別されるデータ値をキャッシュに保存します。
- multiGet()-指定されたキーでキャッシュから複数のデータ値を取得します。
- multiAdd()-複数のデータ値をキャッシュに保存します。 各アイテムはキーで識別されます。 キーがキャッシュに既に存在する場合、データ値はスキップされます。
- multiSet()-複数のデータ値をキャッシュに保存します。 各アイテムはキーで識別されます。
- exists()-指定されたキーがキャッシュで見つかったかどうかを示す値を返します。
- flush()-すべてのデータ値をキャッシュから削除します。
- delete()-キーから識別されたデータ値をキャッシュから削除します。
キャッシュに保存されたデータ値は、削除されない限り永久に残ります。 この動作を変更するには、set()メソッドを呼び出してデータ値を保存するときに有効期限パラメーターを設定します。
キャッシュされたデータ値は、*キャッシュの依存関係*の変更により無効化されることもあります
- yii \ caching \ DbDependency-指定されたSQLステートメントのクエリ結果が変更されると、依存関係が変更されます。
- yii \ caching \ ChainedDependency-チェーンの依存関係のいずれかが変更されると、依存関係が変更されます。
- yii \ caching \ FileDependency-ファイルの最終変更時刻が変更されると、依存関係が変更されます。
- yii \ caching \ ExpressionDependency-指定されたPHP式の結果が変更されると、依存関係が変更されます。
ここで、 cache アプリケーションコンポーネントをアプリケーションに追加します。
ステップ1 *- *config/web.php ファイルを変更します。
ステップ2 *- actionTestCache()*という新しい関数をSiteControllerに追加します。
ステップ3 *-Webブラウザーのアドレスバーに *http://localhost:8080/index.php?r = site/test-cache と入力すると、次のように表示されます。
- ステップ4 *-ページをリロードすると、日付が変更されていないことに気付くはずです。 日付値はキャッシュされ、キャッシュは30秒以内に期限切れになります。 30秒後にページをリロードします。
クエリキャッシング
クエリキャッシングは、データベースクエリの結果をキャッシュします。 クエリキャッシングには、DB接続とキャッシュアプリケーションコンポーネントが必要です。
ステップ1 *- actionQueryCaching()*という新しいメソッドをSiteControllerに追加します。
上記のコードでは、データベースクエリをキャッシュし、新しいユーザーを追加して、ユーザーカウントを表示します。
ステップ2 *-URL *http://localhost:8080/index.php?r = site/query-caching にアクセスして、ページをリロードします。
最初のページを開くと、DBクエリをキャッシュし、すべてのユーザーカウントを表示します。 ページをリロードすると、データベースクエリがキャッシュされるため、キャッシュされたDBクエリの結果は同じです。
次のコマンドを使用して、コンソールからキャッシュをフラッシュできます-
- yii cache -利用可能なキャッシュコンポーネントを表示します。
- yii cache/flush cache1 cache2 cache3 -キャッシュコンポーネントcache1、cache2、cache3をフラッシュします。
- yii cache/flush-all -すべてのキャッシュコンポーネントをフラッシュします。
ステップ3 *-アプリケーションのプロジェクトルート内で。/yii cache/flush-all *を実行します。