Buforowanie (ang. Caching)

Buforowanie jest tanim i efektywnym sposobem zwiększenia wydajności aplikacji sieciowej. Poprzez przechowywanie danych statycznych w buforze (ang. cache) oraz dostarczaniu ich wtedy gdy są wymagane, oszczędzamy czas potrzebny do wygenerowania danych.

Korzystanie z buforowania w Yii obejmuje głównie konfigurowanie oraz używanie komponentu cache aplikacji. Następująca konfiguracja aplikacji określa komponent cache, który używa memcache wraz z dwoma serwerami buforującymi.

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),
            ),
        ),
    ),
);

W czasie działania aplikacji, dostęp do komponentu cache można uzyskać poprzez Yii::app()->cache.

Yii dostarcza różnych komponentów cache, które mogą przechowywać dane za pomocą różnych mediów. Na przykład, komponent CMemCache hermetyzuje rozszerzenie PHP memcache i używa pamięci jako medium do przechowywania cache'u; komponent CApcCache hermetyzuje rozszerzenie APC dla PHP; natomiast komponent CDbCache przechowuje buforowane dane w bazie danych. Poniżej znajduje się podsumowanie dostępnych komponentów cache:

Wskazówka: Ponieważ wszystkie te komponenty dziedziczą z tej samej klasy bazowej CCache, można je zamienić na inną metodę buforowania bez modyfikowania kodu, który używa buforowania.

Buforowania można używać na różnych poziomach. Na najniższym poziomie używamy buforowania do zachowania pojedynczej porcji danych takich jak zmienna i nazywamy to buforowaniem danych (ang. data caching). Na następnym poziomie, zachowujemy w buforze fragment strony, który jest generowany przez część skryptu widoku. Na najwyższym poziomie, zachowujemy całą stronę w buforze i dostarczamy ją z bufora wtedy gdy zajdzie taka potrzeba.

W następnych dwóch podpunktach opowiemy jak używać buforowania na tych poziomach.

Uwaga: Z definicji, bufor jest ulotnym nośnikiem. Nie sprawdza on istnienia buforowanych danych nawet jeśli nie wygasa. Dlatego też, nie używaj buforu jako miejsca stałego składowania (np. nie używaj buforu do przechowywania danych sesji).

$Id: caching.overview.txt 2890 2011-01-18 15:58:34Z qiang.xue $