mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-12 02:56:55 +01:00
53 lines
5.6 KiB
Plaintext
53 lines
5.6 KiB
Plaintext
Кешування
|
||
=========
|
||
|
||
Кешування — простий та ефективний спосіб покращення продуктивності веб-додатка. Зберігаючи відносно статичні дані в кеші і використовуючи ці дані з кешу коли буде потрібно, ми економимо час генерації даних.
|
||
|
||
Використання кешу в Yii — це, головним чином, конфігурування та виклик компонента кешу. Нижче показана конфігурація, яка визначає компонент кешу, який використовує memcache з двома кеш-серверами.
|
||
|
||
~~~
|
||
[php]
|
||
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 забезпечує різні кеш-компоненти, кешуючи дані в різних сховищах. Наприклад, компонент [CMemCache] інкапсулює доповнення memcache для PHP і використовує памʼять як сховище кешу; компонент [CApcCache] інкапсулює доповнення APC для PHP, і компонент [CDbCache] зберігає кешовані дані в базі даних. Далі наведено перелік доступних компонентів кешування:
|
||
|
||
- [CMemCache]: використовує [додаток memcache для PHP](http://php.net/manual/en/book.memcache.php);
|
||
|
||
- [CApcCache]: використовує [додаток APC для PHP](http://php.net/manual/en/book.apc.php);
|
||
|
||
- [CXCache]: використовує [додаток XCache для PHP](http://xcache.lighttpd.net/).
|
||
|
||
- [CEAcceleratorCache]: використовує [додаток EAccelerator для PHP](http://eaccelerator.net/);
|
||
|
||
- [CDbCache]: використовує таблиці бази даних для зберігання кешованих даних. За замовчуванням створює та використовує базу даних SQLite3 у тимчасовому каталозі. Ми можемо явно визначити базу даних встановленням властивості [connectionID|CDbCache::connectionID];
|
||
|
||
- [CZendDataCache]: використовує [Zend Data Cache](http://files.zend.com/help/Zend-Server-Community-Edition/data_cache_component.htm);
|
||
|
||
- [CFileCache]: для зберігання кешованих даних використовуються файли. Добре підходить для великих одиниць даних, таких як цілі сторінки;
|
||
|
||
- [CDummyCache]: кеш-пустишка. Нічого не кешує. Потрібен для спрощення коду, необхідного при перевірці доступності кеша. Ми можемо скористатися даними компонентом під час розробки або у випадку, якщо сервер не підтримує кешування. Коли здійснення кешування буде можливо, ми зможемо його застосувати. В обох випадках буде використаний ідентичний код для отримання даних `Yii::app()->cache->get($key)`. При цьому можна не турбуватися про те, що `Yii::app()->cache` може дорівнювати `null`.
|
||
|
||
> Tip|Підказка: Всі ці компоненти кешування успадковуються від базового класу [CCache], тому можна переключатися між різними типами кешування без зміни коду, який використовує кеш.
|
||
|
||
Кешування може використовуватися на різних рівнях. На нижчому рівні ми використовуємо кешування для зберігання «атомарних» (одиночних) шматків даних, таких як змінні, і називаємо це *кешуванням даних*. На наступному рівні, ми зберігаємо в кеші фрагменти сторінки, які генеруються частиною скрипта представлення. І на вищому рівні ми зберігаємо в кеші цілу сторінку і отримуємо її з кеша при необхідності.
|
||
|
||
У наступних декількох підрозділах ми детально розберемо, як використовувати кешування на цих рівнях.
|
||
|
||
> Note|Примітка: За визначенням, кеш - енергозалежне середовище. Тому немає гарантій збереження кешованих даних, навіть якщо вони не старіють. Тому не використовуйте кеш як постійне сховище даних (наприклад, не використовуйте кеш для зберігання даних сесій).
|
||
|
||
<div class="revision">$Id: caching.overview.txt 2890 2011-01-18 15:58:34Z qiang.xue $</div> |