캐싱 드라이버¶
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!';
// 5분 동안 캐시에 저장
$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'); // 'my_foo'라는 이름의 캐시 항목을 가져옵니다
클래스 레퍼런스¶
- class CI_Cache¶
- is_supported($driver)¶
- 매개변수:
$driver (
string) – 캐싱 드라이버 이름
- 반환:
지원되면 TRUE, 그렇지 않으면 FALSE
- 반환 형식:
bool
이 메소드는
$this->cache->get()을 통해 드라이버에 접근할 때 자동으로 호출됩니다. 그러나 개별 드라이버를 사용하는 경우 이 메소드를 호출하여 드라이버가 호스팅 환경에서 지원되는지 확인하세요.if ($this->cache->apc->is_supported()) { if ($data = $this->cache->apc->get('my_cache')) { // 작업 수행 } }
- get($id)¶
- 매개변수:
$id (
string) – 캐시 항목 이름
- 반환:
항목 값 또는 찾을 수 없으면 FALSE
- 반환 형식:
mixed
이 메소드는 캐시 저장소에서 항목을 가져오려고 시도합니다. 항목이 존재하지 않으면 FALSE를 반환합니다.
$foo = $this->cache->get('my_cached_item');
- save($id, $data[, $ttl = 60[, $raw = FALSE]])¶
- 매개변수:
$id (
string) – 캐시 항목 이름$data (
mixed) – 저장할 데이터$ttl (
int) – 유효 시간(초), 기본값 60$raw (
bool) – 원시 값을 저장할지 여부
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
string
이 메소드는 캐시 저장소에 항목을 저장합니다. 저장에 실패하면 FALSE를 반환합니다.
$this->cache->save('cache_item_id', 'data_to_cache');
참고
$raw매개변수는increment()와decrement()사용을 허용하기 위해 APC, APCu, Memcache에서만 사용됩니다.
- delete($id)¶
- 매개변수:
$id (
string) – 캐시된 항목의 이름
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
이 메소드는 캐시 저장소에서 특정 항목을 삭제합니다. 항목 삭제에 실패하면 FALSE를 반환합니다.
$this->cache->delete('cache_item_id');
- increment($id[, $offset = 1])¶
- 매개변수:
$id (
string) – 캐시 ID$offset (
int) – 추가할 단계/값
- 반환:
성공 시 새 값, 실패 시 FALSE
- 반환 형식:
mixed
저장된 원시 값의 원자적 증가를 수행합니다.
// 'iterator'는 값이 2입니다 $this->cache->increment('iterator'); // 'iterator'는 이제 3입니다 $this->cache->increment('iterator', 3); // 'iterator'는 이제 6입니다
- decrement($id[, $offset = 1])¶
- 매개변수:
$id (
string) – 캐시 ID$offset (
int) – 감소할 단계/값
- 반환:
성공 시 새 값, 실패 시 FALSE
- 반환 형식:
mixed
저장된 원시 값의 원자적 감소를 수행합니다.
// 'iterator'는 값이 6입니다 $this->cache->decrement('iterator'); // 'iterator'는 이제 5입니다 $this->cache->decrement('iterator', 2); // 'iterator'는 이제 3입니다
- clean()¶
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
이 메소드는 전체 캐시를 ‘비웁니다’. 캐시 파일 삭제에 실패하면 FALSE를 반환합니다.
$this->cache->clean();
- cache_info()¶
- 반환:
전체 캐시 데이터베이스에 대한 정보
- 반환 형식:
mixed
이 메소드는 전체 캐시에 대한 정보를 반환합니다.
var_dump($this->cache->cache_info());
참고
반환되는 정보와 데이터 구조는 사용 중인 어댑터에 따라 다릅니다.
- get_metadata($id)¶
- 매개변수:
$id (
string) – 캐시 항목 이름
- 반환:
캐시된 항목에 대한 메타데이터
- 반환 형식:
mixed
이 메소드는 캐시의 특정 항목에 대한 자세한 정보를 반환합니다.
var_dump($this->cache->get_metadata('my_cached_item'));
참고
반환되는 정보와 데이터 구조는 사용 중인 어댑터에 따라 다릅니다.
- get_loaded_driver()¶
- 반환:
초기화 후 로드된 드라이버 이름 (‘apc’, ‘apcu’, ‘dummy’, ‘file’, ‘memcached’, ‘redis’ 또는 ‘wincache’)
- 반환 형식:
string
이 메소드는 초기화 후 현재 사용 중인 캐싱 드라이버를 반환합니다.
echo $this->cache->get_loaded_driver(); // "file"과 같은 값을 반환합니다
드라이버¶
Alternative PHP Cache (APC) 캐싱¶
위에 나열된 모든 메소드는 다음과 같이 드라이버 로더에 특정 어댑터를 전달하지 않고 접근할 수 있습니다:
$this->load->driver('cache');
$this->cache->apc->save('foo', 'bar', 10);
APC에 대한 자세한 내용은 https://php.net/apc를 참조하세요.
APC User Cache (APCu) 캐싱¶
위에 나열된 모든 메소드는 다음과 같이 드라이버 로더에 특정 어댑터를 전달하지 않고 접근할 수 있습니다:
$this->load->driver('cache');
$this->cache->apcu->save('foo', 'bar', 10);
APCu에 대한 자세한 내용은 https://php.net/apcu를 참조하세요.
파일 기반 캐싱¶
출력 클래스의 캐싱과 달리, 드라이버 파일 기반 캐싱은 뷰 파일의 일부를 캐시할 수 있습니다. 주의하여 사용하고, 디스크 I/O가 캐싱으로 인한 긍정적인 이득을 상쇄하는 지점이 올 수 있으므로 애플리케이션을 벤치마크하세요.
위에 나열된 모든 메소드는 다음과 같이 드라이버 로더에 특정 어댑터를 전달하지 않고 접근할 수 있습니다:
$this->load->driver('cache');
$this->cache->file->save('foo', 'bar', 10);
Memcached 캐싱¶
여러 Memcached 서버는 _application/config/* 디렉터리에 있는 memcached.php 설정 파일에서 지정할 수 있습니다.
위에 나열된 모든 메소드는 다음과 같이 드라이버 로더에 특정 어댑터를 전달하지 않고 접근할 수 있습니다:
$this->load->driver('cache');
$this->cache->memcached->save('foo', 'bar', 10);
Memcached에 대한 자세한 내용은 https://php.net/memcached를 참조하세요.
WinCache 캐싱¶
Windows에서는 WinCache 드라이버도 사용할 수 있습니다.
위에 나열된 모든 메소드는 다음과 같이 드라이버 로더에 특정 어댑터를 전달하지 않고 접근할 수 있습니다:
$this->load->driver('cache');
$this->cache->wincache->save('foo', 'bar', 10);
WinCache에 대한 자세한 내용은 https://php.net/wincache를 참조하세요.
Redis 캐싱¶
Redis는 LRU 캐시 모드로 작동할 수 있는 인메모리 키-값 저장소입니다. 사용하려면 Redis 서버와 phpredis PHP 확장이 필요합니다.
Redis 서버에 연결하기 위한 설정 옵션은 application/config/redis.php 파일에 저장해야 합니다. 사용 가능한 옵션:
$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);
Redis에 대한 자세한 내용은 https://redis.io를 참조하세요.
더미 캐시¶
이것은 항상 ‘미스’가 되는 캐싱 백엔드입니다. 데이터를 저장하지 않지만, 선택한 캐시를 지원하지 않는 환경에서도 캐싱 코드를 그대로 유지할 수 있게 해줍니다.