캐싱드라이버 Caching Driver

CodeIgniter는 몇 가지 가장 인기있는 형식의 빠른 동적 캐싱에 대한 래퍼를 제공합니다. 파일 기반 캐싱 이외는 특​정한 서버 요구 사항이 필요합니다. 만약 필요한 요구사항이 만족되지 않으면 치명적인 예외를 던집니다.

사용 예제

다음의 예는, 캐시 드라이버를 로드하고, 사용하는 드라이버로 APC를 지정하고,APC를 사용할 수 없는 경우 파일 기반 캐싱으로 대체합니다.

$this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));

if ( ! $foo = $this->cache->get('foo'))
{
        echo 'Saving to the cache!<br />';
        $foo = 'foobarbaz!';

        // Save into the cache for 5 minutes
        $this->cache->save('foo', $foo, 300);
}

echo $foo;

key_prefix 설정을 통해, 같은 환경에서 여러 어플리케이션을 사용할 때, 캐시 접두어 사용으로 중복을 방지할 수 있습니다.

$this->load->driver('cache',
        array('adapter' => 'apc', 'backup' => 'file', 'key_prefix' => 'my_')
);

$this->cache->get('foo'); // Will get the cache entry named 'my_foo'

클래스 레퍼런스

class CI_Cache
is_supported($driver)
인수:
  • $driver (string) – the name of the caching driver
반환값:

TRUE if supported, FALSE if not

반환형:

bool

이 함수는 $this->cache->get()를 통해 드라이버에 접근할 때 자동으로 호출됩니다. 그러나, 만약 별도의 드라이버를 사용하는 경우이 함수를 호출하여 드라이버가 서버 환경에서 지원되는지 확인하십시오.

if ($this->cache->apc->is_supported()
{
        if ($data = $this->cache->apc->get('my_cache'))
        {
                // do things.
        }
}
get($id)
인수:
  • $id (string) – Cache item name
반환값:

Item value or FALSE if not found

반환형:

mixed

이 함수는 캐시에서 한 항목을 가져옵니다. 만약 해당 항목이없는 경우, 이 메소드는FALSE 을 반환합니다.

$foo = $this->cache->get('my_cached_item');
save($id, $data[, $ttl = 60[, $raw = FALSE]])
인수:
  • $id (string) – Cache item name
  • $data (mixed) – the data to save
  • $ttl (int) – Time To Live, in seconds (default 60)
  • $raw (bool) – Whether to store the raw value
반환값:

TRUE on success, FALSE on failure

반환형:

문자열

캐시에 한 항목을 저장합니다. 저장에 실패하면FALSE를 리턴합니다.

$this->cache->save('cache_item_id', 'data_to_cache');

Note

$raw 파라미터는 increment()decrement() 를 사용하기 위해, APC 와 Memcache 에서만 사용됩니다.

delete($id)
인수:
  • $id (string) – name of cached item
반환값:

TRUE on success, FALSE on failure

반환형:

bool

캐시에서 지정한 항목을 제거합니다.제거에 실패하면 FALSE를 리턴합니다.

$this->cache->delete('cache_item_id');
increment($id[, $offset = 1])
인수:
  • $id (string) – Cache ID
  • $offset (int) – Step/value to add
반환값:

New value on success, FALSE on failure

반환형:

mixed

원시 저장된 값의 증가를 실행합니다.

// 'iterator' has a value of 2

$this->cache->increment('iterator'); // 'iterator' is now 3

$this->cache->increment('iterator', 3); // 'iterator' is now 6
decrement($id[, $offset = 1])
인수:
  • $id (string) – Cache ID
  • $offset (int) – Step/value to reduce by
반환값:

New value on success, FALSE on failure

반환형:

mixed

원시 저장된 값의 감소를 실행합니다.

// 'iterator' has a value of 6

$this->cache->decrement('iterator'); // 'iterator' is now 5

$this->cache->decrement('iterator', 2); // 'iterator' is now 3
clean()
반환값:TRUE on success, FALSE on failure
반환형:bool

이 함수는 전체 캐시를 삭제합니다. 만약 캐시 파일 삭제에 실패하면 FALSE를 반환합니다.

$this->cache->clean();
cache_info()
반환값:Information on the entire cache database
반환형:mixed

이 함수는 전체 캐시 정보를 반환합니다.

var_dump($this->cache->cache_info());

Note

반환된 정보와 데이터의 구조는 어떤 아답터를 사용하고 있는지에 따라 의존합니다.

get_metadata($id)
인수:
  • $id (string) – Cache item name
반환값:

Metadata for the cached item

반환형:

mixed

이 함수는 캐시의 특정 항목에 대한 자세한 정보를 반환합니다.

var_dump($this->cache->get_metadata('my_cached_item'));

Note

반환된 정보와 데이터의 구조는 아답타의 종류에 따라 결정됩니다.

드라이버 Drivers

Alternative PHP Cache (APC) 캐싱

위에서 설명한 함수들은 아래와 같이 특정 어댑터를 지정하지 않고 사용할 수 있습니다:

$this->load->driver('cache');
$this->cache->apc->save('foo', 'bar', 10);

APC에 대한 더 자세한 정보는 http://php.net/apc 를 참조하십시오.

파일기반 캐싱

출력 클래스의 캐싱과 달리 파일 기반 캐싱 드라이버는 뷰파일의 일부를 캐시할 수 있습니다. 파일기반의 캐싱은 주의해서 사용해야 합니다. 디스크에 읽고 쓰는 것이 너무 빈번해져 캐싱의 효과를 넘어서버릴 수 있습니다.

위에서 설명한 모든 함수는 다음과 같이 특정 어댑터를 드라이버 로더에 지정하지 않고 사용할 수 있습니다:

$this->load->driver('cache');
$this->cache->file->save('foo', 'bar', 10);

Memcached 캐싱

application/config/ 에 있는 memcached.php 설정파일에 여러 개의 메모리캐싱서버를 지정할 수 있습니다.

위에서 설명한 모든 함수는 다음과 같이 특정 어댑터를 드라이버 로더에 지정하지 않고 사용할 수 있습니다:

$this->load->driver('cache');
$this->cache->memcached->save('foo', 'bar', 10);

Memcached 에 대한 더 자세한 정보는 http://php.net/memcached 를 참조하십시오.

WinCache 캐싱

윈도우 환경에서, WinCache 드라이버를 사용할 수 있습니다.

위에서 설명한 모든 함수는 다음과 같이 특정 어댑터를 드라이버 로더에 지정하지 않고 사용할 수 있습니다:

$this->load->driver('cache');
$this->cache->wincache->save('foo', 'bar', 10);

WinCache 에 대한 더 자세한 정보는 http://php.net/wincache 를 참조하십시오.

Redis 캐싱

Redis 는 LRU 캐시 모드에서 작동 할 수 있는 메모리 키 - 값 저장소입니다. 사용하기 위해서는 Redis 서버와 phpredis PHP extension이 필요합니다.

Redis 서버에 연결하기 위한 환경 옵션은 application/config/redis.php 파일 안에 저장해야 합니다. 사용 가능한 옵션은:

$config['socket_type'] = 'tcp'; //`tcp` or `unix`
$config['socket'] = '/var/run/redis.sock'; // in case of `unix` socket type
$config['host'] = '127.0.0.1';
$config['password'] = NULL;
$config['port'] = 6379;
$config['timeout'] = 0;

위에서 설명한 모든 함수는 다음과 같이 특정 어댑터를 드라이버 로더에 지정하지 않고 사용할 수 있습니다:

$this->load->driver('cache');
$this->cache->redis->save('foo', 'bar', 10);

WinCache 에 대한 더 자세한 정보는 http://redis.io 를 참조하십시오.

더미 캐싱

캐시의 끝단이며, 항상 ‘miss.’ 합니다. 데이터를 저장하지는 않지만, 캐싱이 지원되지 않는 환경에서도 캐싱 소스 코드를 유지할 수 있게 합니다.