한 번 CI- 캐싱 메커니즘의 일부를 다시 작성했습니다. 아마도 이것은 당신에게 도움이 될 수 있습니다. 그것은 '캐시'모든 기능입니다. 시스템 파일에 대한 덮어 쓰기로 작성했습니다.
사용 예가 나와 있습니다. 그것은 아주 간단해야합니다. 이 코드를 사용하여 모든 함수 결과를 캐시 할 수 있으며 세션/요청간에 공유 할 수도 있습니다.
http://codeigniter.com/forums/viewthread/221313/
또는이 하나 :이 새로운 기능이 필요하지 않은 경우
https://github.com/EllisLab/CodeIgniter/issues/1646
, 표준 CI 캐싱 메커니즘을 사용하는 방법에 대한 예제로 사용할 수 있습니다. 이처럼
:
class your_class extends CI_Model
{
// ------------------------------------------------------------------------
function __construct()
{
$cache_adapter = 'apc';
$this->load->driver('cache', array('adapter' => $cache_adapter, 'backup' => 'dummy'));
$this->cache->{$cache_adapter}->is_supported();
}
// ------------------------------------------------------------------------
public function your_function($arg)
{
$result = $this->cache->get(__CLASS__ . __METHOD__ . serialize($arg));
if (empty($result))
{
$result = ... /* your calculation here */
$this->cache->save(__CLASS__ . __METHOD__ . serialize($arg));
}
return $result;
}
}
내가 캐시에 사용하는 키는 소위 망가 함수 이름입니다. 함수의 결과가 argumens에만 의존하면 (필요에 따라) 그대로 사용할 수 있습니다. 키의 소형화를 위해 해시 할 수 있습니다.
public function your_function($arg)
{
$result = $this->cache->get(md5(__CLASS__ . __METHOD__ . serialize($arg)));
if (empty($result))
{
$result = ... /* your calculation here */
$this->cache->save(md5(__CLASS__ . __METHOD__ . serialize($arg)));
}
return $result;
}
CE 캐시 (http://www.causingeffect.com/software/expressionengine/ce-cache)는 개발자가 서버에 설치되어있는 것에 의존하여 사용하는 캐싱 설정을 선택할 수 있도록 구성 설정을 사용합니다. 접근 방식의 종류 ...? 그래서 Memcache 용으로 빌드하고, 탐지되거나 선택되지 않은 경우 파일이나 데이터베이스 또는 캐싱하지 않습니다. –