このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0275

ファイルキャッシュ

 ローカルディスク上にファイルを作成して、キャッシュデータを記録・読み込みを行います。
 そのため、特別な準備なく利用できますが、実データ処理とキャッシュ処理(ディスクI/O)の負荷との
トレードオフとなります。

キャッシュデータファイルの保存先

 キャッシュデータファイルの保存先は、デフォルトでは「application/cache/」ディレクトリとなります。
 任意の保存先を設定する場合は、「application/config/」ディレクトリ、 もしくは、
「application/config/[環境]/」 ディレクトリにある「config.php」設定ファイルの「$config['cache_path']」にディレクトリパスをセットします。

  • config.php
  • $config['cache_path'] = APPPATH . 'cache/my_data/';

Fileベースドライバのロード

 「LOAD」オブジェクトの「driver()」メソッドで、Fileベースドライバをロードします。

 第一引数に「cache」を指定し、第二引数には連想配列で、利用したいキャッシュドライバを指定します。

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

Fileベースドライバの機能

 キャッシュドライバの機能は、主に「キャッシュ情報の取得」、 「キャッシューデータのセット」、
「キャシュデータの削除」の3種類です。

is_supported('file_based') 一番上に戻る

 指定したキャッシュドライバがシステムで利用できるか確認します。
 指定したキャッシュドライバが利用できる場合は「TRUE」、 利用できない場合は「FALSE」を返します。

    $this->load->driver('cache', array('adapter' => 'file_based'));
    
    if ($this->cache->is_supported('file_based')) {
        // Fileベース キャッシングの利用が可能です。
    }
    else {
        // Fileベース キャッシングは利用できません。
    }
    

cache_info() 一番上に戻る

 キャッシング情報を返します。
 返すデータはキャッシュドライバによって異なります。

    echo var_export($this->cache->cache_info(), TRUE);
    
    array (
      'aaa' => 
      array (
        'name' => 'aaa',
        'server_path' => '/var/www/vhosts/codeigniter/application/cache/aaa',
        'size' => 67,
        'date' => 1485035121,
        'relative_path' => '../application/cache/',
      ),
      'index.html' => 
      array (
        'name' => 'index.html',
        'server_path' => '/var/www/vhosts/codeigniter/application/cache/index.html',
        'size' => 114,
        'date' => 1425825079,
        'relative_path' => '../application/cache/',
      ),
    )
    
    

save($key, $val, $ttl) 一番上に戻る

 キャッシュしたいデータをセットします。
 第一引数には、データを識別する「キー」を指定し、
 第二引数には、データを指定します。
 第三引数は、データをキャッシュする時間を秒単位で指定することができます。
 第三引数を指定しなかった場合のデフォルトは「60」となります。

    $id = $this->input->post('id');
    
    if ($my_data = $this->sample_model->get($id)) {
        
        $this->cache->save("my_data_{$id}", $my_data, 600);
        
    }
    

get($key) 一番上に戻る

 事前にキャッシュしたデータを取得します。
 引数には、キャッシュしたデータを識別する「キー」を指定します。

    $id = $this->input->post('id');
    
    if (! $my_data = $this->cache->get("my_data_{$id}")) {
    
        if ($my_data = $this->sample_model->get($id)) {
    
            $this->cache->save("my_data_{$id}", $my_data, 600);
    
        }
    
    }
    return $my_data;
    

get_metadata($key) 一番上に戻る

 引数で指定した「キー」のキャッシュデータ情報を返します。

expireこのキャッシュデータが削除される時間
mtimeこのキャッシュデータがセットされた時間
dataキャッシュされたデータ
    $this->cache->save('aaa', 'AAA', 600);
    
    echo var_export($this->cache->get_metadata('aaa'), TRUE);
    
    
    false
    
    

delete($key) 一番上に戻る

 引数で指定した「キー」のキャッシュデータをキャッシュから削除します。

    if ($this->cache->delete('aaa')) {
        // キャッシュデータを削除しました。
        echo var_export($this->cache->get_metadata('aaa'), TRUE);
        // false 
    }
    else {
        // キャッシュデータの削除に失敗しました。
    }
    

clean() 一番上に戻る

 全てのキャッシュデータを削除します。

    if ($this->cache->clean()) {
        // キャッシュデータを削除しました。
    }
    else {
        // キャッシュデータの削除に失敗しました。
    }