キャッシュは、Web アプリケーションのパフォーマンスを向上させる簡単かつ効果的な方法です。比較的静的なデータをキャッシュに保存し、リクエストの受信時にそれを取得することで、このデータの生成に必要な時間を節約します。
Yii でのキャッシュの使用には、主にアプリケーションコンポーネントの設定とアクセスが含まれます。 次のアプリケーション構成では、2 つの memcache キャッシュ サーバーを使用するキャッシュ コンポーネントをセットアップします。
array( ...... 'components'=>array( ...... 'cache'=>array( 'class'=>'system.caching.CMemCache', 'servers'=>array( array('host'=>'server1', 'port'=>11211, 'weight'=>60), array('host'=>'server2', 'port'=>11211, 'weight'=>40), ), ), ), );
アプリケーションの実行中は、 Yii::app()->cache
を通じてキャッシュ コンポーネントにアクセスできます。 Yii::app()->cache
访问。
Yii 提供了不同的缓存组件,可以将缓存数据存储到不同的媒介中。例如, CMemCache 组件封装了 PHP 的 memcache 扩展并使用内存作为缓存存储媒介。 CApcCache 组件封装了 PHP APC 扩展; 而 CDbCache 组件会将缓存的数据存入数据库。下面是一个可用缓存组件的列表:
CMemCache: 使用 PHP memcache 扩展.
CApcCache: 使用 PHP APC 扩展.
CXCache: 使用 PHP XCache 扩展。注意,这个是从 1.0.1 版本开始支持的。
CEAcceleratorCache: 使用 PHP EAccelerator 扩展.
CDbCache: 使用一个数据表存储缓存数据。默认情况下,它将创建并使用在 runtime 目录下的一个 SQLite3 数据库。 你也可以通过设置其 connectionID 属性指定一个给它使用的数据库。
CZendDataCache: 使用 Zend Data Cache 作为后台缓存媒介。注意,这个是从 1.0.4 版本开始支持的。
CFileCache: 使用文件存储缓存数据。这个特别适合用于存储大块数据(例如页面)。注意,这个是从 1.0.6 版本开始支持的。
CDummyCache: 目前 dummy 缓存并不实现缓存功能。此组件的目的是用于简化那些需要检查缓存可用性的代码。 例如,在开发阶段或者服务器尚未支持实际的缓存功能,我们可以使用此缓存组件。当启用了实际的缓存支持后,我们可以切换到使用相应的缓存组件。 在这两种情况中,我们可以使用同样的代码Yii::app()->cache->get($key)
获取数据片段而不需要担心 Yii::app()->cache
可能会是 null
CXCache: PHP XCache 拡張機能を使用します。これはバージョン 1.0.1 からサポートされることに注意してください。- CApcCache: PHP APC 拡張機能を使用します。
CEAcceleratorCache: PHP EAccelerator 拡張機能を使用します。
CFileCache: ファイルを使用してキャッシュ データを保存します。これは、大きなデータの塊 (ページなど) を保存する場合に特に便利です。これはバージョン 1.0.6 以降でサポートされることに注意してください。- CZendDataCache: Zend Data Cache をバックエンド キャッシュ メディアとして使用します。これはバージョン 1.0.4 以降でサポートされることに注意してください。
CDummyCache: 現在、ダミーキャッシュにはキャッシュ機能が実装されていません。このコンポーネントの目的は、キャッシュの可用性を確認する必要があるコードを簡素化することです。 たとえば、このキャッシュ コンポーネントは、開発段階中、またはサーバーが実際のキャッシュ機能をまだサポートしていないときに使用できます。実際のキャッシュ サポートが有効になっている場合は、対応するキャッシュ コンポーネントの使用に切り替えることができます。 どちらの場合も、同じコード Yii::app()->cache->get($key)
を使用して、Yii: :app を気にせずにデータ フラグメントを取得できます。 ()->cache
が null
である可能性があります。このコンポーネントはバージョン 1.0.5 以降でサポートされています。
ヒント:
これらすべてのキャッシュ コンポーネントは同じ基本クラス CCache から継承しているため、キャッシュを使用するコードを変更せずに別のキャッシュ メソッドに切り替えることができます。キャッシュはさまざまなレベルで使用できます。最下位レベルでは、変数などの個々のデータを保存するためにキャッシュを使用します。これを
データ キャッシュ