目次
1. 缓存选项(Caching Options)
有效期(Duration)
依赖(Dependency)
变化(Variation)
ホームページ バックエンド開発 PHPチュートリアル Yii Framework 公式ガイド シリーズ 30 - キャッシング: フラグメントキャッシング

Yii Framework 公式ガイド シリーズ 30 - キャッシング: フラグメントキャッシング

Feb 15, 2017 am 09:16 AM



フラグメントキャッシュとは、Web ページの特定のフラグメントをキャッシュすることを指します。たとえば、ページに年間売上高の概要がテーブルで表示されている場合、このテーブルをキャッシュに保存して、リクエストごとにテーブルを再生成する時間を短縮できます。

フラグメント キャッシュを使用するには、コントローラー ビュー スクリプトで CController::beginCache() と CController::endCache() を呼び出します。どちらのメソッドも、キャッシュされるページ コンテンツを含めて開始および終了します。データ キャッシュと同様に、キャッシュされたフラグメントを識別するには番号が必要です。


...别的HTML内容...
<?php if($this->beginCache($id)) { ?>
...被缓存的内容...
<?php $this->endCache(); } ?>
...别的HTML内容...
ログイン後にコピー

上記では、beginCache() が false を返した場合、キャッシュされたコンテンツがこの場所に自動的に挿入されます。それ以外の場合は、if ステートメント内のコンテンツが実行されます。 endCache() がトリガーされたときにキャッシュに格納されます。 if语句内的内容将被执行并在endCache()触发时缓存。

1. 缓存选项(Caching Options)

当调用beginCache(),可以提供一个数组由缓存选项组成的作为第二个参数,以自定义片段缓存。事实上为了方便,beginCache() 和endCache()方法是[ COutputCache ]widget的包装。因此COutputCache的所有属性都可以在缓存选项中初始化。

有效期(Duration)

也许是最常见的选项是duration,指定了内容在缓存中多久有效。和CCache::set()过期参数有点类似。下面的代码缓存内容片段最多一小时:


...其他HTML内容...
<?php if($this->beginCache($id, array('duration'=>3600))) { ?>
...被缓存的内容...
<?php $this->endCache(); } ?>
...其他HTML内容...
ログイン後にコピー

如果我们不设定期限,它将默认为60 ,这意味着60秒后缓存内容将无效。

依赖(Dependency)

像data caching ,内容片段被缓存也可以有依赖。例如,文章的内容被显示取决于文章是否被修改。

要指定一个依赖,我们建立了dependency选项,可以是一个实现ICacheDependency的对象或可用于生成依赖对象的配置数组。下面的代码指定片段内容取决于lastModified 列的值是否变化:


...其他HTML内容...
<?php if($this->beginCache($id, array('dependency'=>array(
        'class'=>'system.caching.dependencies.CDbCacheDependency',
        'sql'=>'SELECT MAX(lastModified) FROM Post')))) { ?>
...被缓存的内容...
<?php $this->endCache(); } ?>
...其他HTML内容...
ログイン後にコピー

变化(Variation)

缓存的内容可根据一些参数变化。例如,每个人的档案都不一样。缓存的档案内容将根据每个人ID变化。这意味着,当调用beginCache()时将用不同的ID。

COutputCache内置了这一特征,程序员不需要编写根据ID变动内容的模式。以下是摘要。

  • varyByRoute: 设置此选项为true ,缓存的内容将根据route变化。因此,每个控制器和行动的组合将有一个单独的缓存内容。

  • varyBySession: 设置此选项为true ,缓存的内容将根据session ID变化。因此,每个用户会话可能会看到由缓存提供的不同内容。

  • varyByParam: 设置此选项的数组里的名字,缓存的内容将根据GET参数的值变动。例如,如果一个页面显示文章的内容根据id的GET参数,我们可以指定varyByParam为array('id')

    1. キャッシュ オプション
  • beginCache() を呼び出すとき、フラグメント キャッシュをカスタマイズするための 2 番目のパラメーターとしてキャッシュ オプションで構成される配列を指定できます。実際、便宜上、beginCache() メソッドと endCache() メソッドは [COutputCache] ウィジェットのラッパーです。したがって、COutputCache のすべてのプロパティはキャッシュ オプションで初期化できます。

    期間
おそらく最も一般的なオプションは期間であり、コンテンツがキャッシュ内で有効な期間を指定します。これは、CCache::set() の有効期限パラメータに似ています。以下のコードは、コンテンツ スニペットを最大 1 時間キャッシュします:


...其他HTML内容...
<?php if($this->beginCache($id, array('requestTypes'=>array('GET')))) { ?>
...被缓存的内容...
<?php $this->endCache(); } ?>
...其他HTML内容...
ログイン後にコピー

期間を設定しない場合、デフォルトで 60 になります。これは、キャッシュされたコンテンツが 60 秒後に無効になることを意味します。

依存関係

データ キャッシュと同様に、コンテンツ フラグメントもキャッシュされるときに依存関係を持つことができます。たとえば、記事の内容は、記事が変更されたかどうかに応じて表示されます。

依存関係を指定するには、依存関係オプションを作成します。これは、ICacheDependency を実装するオブジェクト、または依存関係オブジェクトの生成に使用できる構成配列にすることができます。次のコードは、フラグメントのコンテンツが lastModified 列の値が変更されるかどうかに依存することを指定します。たとえば、プロフィールは人それぞれ異なります。キャッシュされたプロファイルの内容は、各個人 ID に基づいて変更されます。これは、beginCache() が呼び出されるときに別の ID が使用されることを意味します。


COutputCache にはこの機能が組み込まれており、プログラマは ID に基づいてコンテンツを変更するパターンを記述する必要はありません。以下に概要を示します。

    varyByRoute: このオプションを true に設定すると、キャッシュされたコンテンツがルートに従って変更されます。したがって、各コントローラーとアクションの組み合わせには、個別のキャッシュされたコンテンツが含まれます。

    varyBySession: このオプションを true に設定すると、キャッシュされたコンテンツがセッション ID に基づいて変更されます。したがって、各ユーザー セッションでは、キャッシュによって提供される異なるコンテンツが表示される可能性があります。


    varyByParam: このオプションの配列に名前を設定します。キャッシュされたコンテンツは GET パラメーターの値に応じて変更されます。たとえば、ページに id GET パラメータに基づいて記事コンテンツが表示される場合、varyByParam を array('id') として指定すると、各記事コンテンツをキャッシュできるようになります。このような変更がなければ、特定の記事しかキャッシュできなくなります。

    🎜🎜🎜varyByExpression: このオプションを PHP 式に設定すると、この PHP 式の結果に応じてキャッシュされたコンテンツを変化させることができます。このオプションはバージョン 1.0.4 以降で利用可能です。🎜🎜🎜🎜リクエスト タイプ。 🎜🎜特定の種類のリクエストに対してのみフラグメント キャッシュを有効にしたい場合があります。たとえば、特定の Web ページにフォームを表示する場合、(GET リクエスト経由で) 最初にリクエストされたフォームのみをキャッシュしたいとします。フォームにはユーザー入力が含まれている可能性があるため、その後 (POST リクエスト経由で) 表示されるフォームはキャッシュされません。これを行うには、requestTypes オプションを指定します。 🎜🎜🎜🎜🎜🎜
...其他HTML内容...
<?php if($this->beginCache($id1)) { ?>
...外部被缓存内容...
    <?php if($this->beginCache($id2)) { ?>
    ...内部被缓存内容...
    <?php $this->endCache(); } ?>
...外部被缓存内容...
<?php $this->endCache(); } ?>
...其他HTML内容...
ログイン後にコピー
🎜🎜🎜2. ネストされたキャッシュ 🎜🎜 フラグメント キャッシュはネストできます。つまり、キャッシュ フラグメントは、より大きなフラグメント キャッシュに接続されます。たとえば、コメントは内部スニペット キャッシュにキャッシュされ、記事コンテンツと一緒に外部キャッシュにキャッシュされます。 🎜🎜🎜🎜🎜🎜rrreee🎜🎜🎜ネストされたキャッシュでは、さまざまなキャッシュ オプションを設定できます。たとえば、上の例では、内部キャッシュと外部キャッシュを異なる期間値に設定できます。外部キャッシュに格納されたデータが無効な場合でも、内部キャッシュは有効な内部フラグメントを提供できます。 しかし、その逆は当てはまりません。外部キャッシュに有効なデータが含まれている場合は、内部キャッシュ内のコンテンツの有効期限が切れている場合でも、キャッシュされたコピーが永久に保持されます。 🎜🎜上記は、Yii Framework 公式ガイド シリーズ 30 - キャッシュ: フラグメント キャッシュの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。 🎜🎜🎜🎜
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Yii フレームワークでの RESTful API 開発 Yii フレームワークでの RESTful API 開発 Jun 21, 2023 pm 12:34 PM

Yii は、PHP をベースにした高性能 MVC フレームワークで、Web アプリケーションの迅速かつ効率的な開発をサポートする非常に豊富なツールと機能のセットを提供します。中でも、Yii フレームワークの RESTful API 機能は、Yii フレームワークを使用することで高性能で拡張性の高い RESTful インターフェースを簡単に構築でき、Web アプリケーションの開発を強力にサポートできるため、ますます開発者の注目と愛を集めています。 RESTfulAPI の概要 RESTfulAPI は

Yii フレームワークミドルウェア: アプリケーションに複数のデータストレージサポートを提供 Yii フレームワークミドルウェア: アプリケーションに複数のデータストレージサポートを提供 Jul 28, 2023 pm 12:43 PM

Yii フレームワークのミドルウェア: アプリケーションに複数のデータ ストレージのサポートを提供する はじめに ミドルウェア (ミドルウェア) は、Yii フレームワークの重要な概念であり、アプリケーションに複数のデータ ストレージのサポートを提供します。ミドルウェアはフィルターのように機能し、アプリケーションのリクエストとレスポンスの間にカスタム コードを挿入します。ミドルウェアを通じて、リクエストを処理、検証、フィルタリングし、処理された結果を次のミドルウェアまたは最終ハンドラーに渡すことができます。 Yii フレームワークのミドルウェアは非常に使いやすいです

PHP で Yii フレームワークを使用する方法 PHP で Yii フレームワークを使用する方法 Jun 27, 2023 pm 07:00 PM

Web アプリケーションの急速な開発に伴い、最新の Web 開発は重要なスキルになりました。効率的な Web アプリケーションを開発するために多くのフレームワークやツールが利用できますが、その中でも Yii フレームワークは非常に人気のあるフレームワークです。 Yii は、最新のデザインパターンとテクノロジーを使用し、強力なツールとコンポーネントを提供し、複雑な Web アプリケーションの構築に最適な、高性能のコンポーネントベースの PHP フレームワークです。この記事では、Yii フレームワークを使用して Web アプリケーションを構築する方法について説明します。まずYiiフレームワークをインストールし、

Yii フレームワークを使用して Web ページのキャッシュとページのチャンクを実装する手順 Yii フレームワークを使用して Web ページのキャッシュとページのチャンクを実装する手順 Jul 30, 2023 am 09:22 AM

Yii フレームワークを使用して Web ページのキャッシュとページのチャンクを実装する手順 はじめに: Web 開発プロセス中、Web サイトのパフォーマンスとユーザー エクスペリエンスを向上させるために、多くの場合、ページのキャッシュとチャンクが必要になります。 Yii フレームワークは強力なキャッシュとレイアウト機能を提供しており、開発者が Web ページのキャッシュとページ チャンキングを迅速に実装できるようにします。この記事では、Yii フレームワークを使用して Web ページのキャッシュとページ チャンキングを実装する方法を紹介します。 1. Web ページのキャッシュをオンにする Yii フレームワークでは、設定ファイルを通じて Web ページのキャッシュをオンにすることができます。メイン設定ファイルを開きます。

Yii フレームワークを使用してゲームガイド Web サイトを作成する Yii フレームワークを使用してゲームガイド Web サイトを作成する Jun 21, 2023 pm 01:45 PM

近年、ゲーム業界の急速な発展に伴い、ゲームをクリアするためのゲーム戦略を模索するプレイヤーがますます増えています。したがって、ゲームガイド Web サイトを作成することで、プレイヤーはゲームガイドを入手しやすくなると同時に、プレイヤーにより良いゲーム体験を提供することができます。このような Web サイトを作成する場合、開発には Yii フレームワークを使用できます。 Yii フレームワークは、PHP プログラミング言語に基づいた Web アプリケーション開発フレームワークです。高効率、セキュリティ、強力な拡張性という特徴があり、ゲームガイドをより迅速かつ効率的に作成するのに役立ちます。

Yii Framework Middleware: アプリケーションにロギング機能とデバッグ機能を追加します。 Yii Framework Middleware: アプリケーションにロギング機能とデバッグ機能を追加します。 Jul 28, 2023 pm 08:49 PM

Yii フレームワーク ミドルウェア: アプリケーションにロギング機能とデバッグ機能を追加する [はじめに] Web アプリケーションを開発する場合、通常、アプリケーションのパフォーマンスと安定性を向上させるために、いくつかの機能を追加する必要があります。 Yii フレームワークは、アプリケーションがリクエストを処理する前後にいくつかの追加タスクを実行できるようにするミドルウェアの概念を提供します。この記事では、Yii フレームワークのミドルウェア機能を使用してロギングとデバッグ機能を実装する方法を紹介します。 【ミドルウェアとは】 ミドルウェアとは、アプリケーションがリクエストを処理する前後のリクエストとレスポンスの処理を指します。

Yii フレームワークでコントローラーを使用して Ajax リクエストを処理する方法 Yii フレームワークでコントローラーを使用して Ajax リクエストを処理する方法 Jul 28, 2023 pm 07:37 PM

Yii フレームワークでは、コントローラーはリクエストの処理において重要な役割を果たします。通常のページ リクエストの処理に加えて、コントローラーを使用して Ajax リクエストを処理することもできます。この記事では、Yii フレームワークで Ajax リクエストを処理する方法を紹介し、コード例を示します。 Yii フレームワークでは、Ajax リクエストの処理は次の手順で実行できます。 最初の手順は、コントローラー (Controller) クラスを作成することです。 Yii フレームワークが提供する基本コントローラークラス yiiwebCo を継承できます。

Yii フレームワークミドルウェアを使用して機密データを暗号化および復号化する Yii フレームワークミドルウェアを使用して機密データを暗号化および復号化する Jul 28, 2023 pm 07:12 PM

Yii フレームワークミドルウェアを使用した機密データの暗号化と復号化 はじめに: 最新のインターネット アプリケーションでは、プライバシーとデータ セキュリティが非常に重要な問題です。ユーザーの機密データに権限のない訪問者がアクセスできないようにするには、このデータを暗号化する必要があります。 Yii フレームワークは、機密データの暗号化と復号化の機能を実装するためのシンプルかつ効果的な方法を提供します。この記事では、Yii フレームワークのミドルウェアを使用してこれを実現する方法について説明します。 Yii フレームワークの概要 Yii フレームワークは、高性能の PHP フレームワークです。

See all articles