2019年3月12日 星期二

CI cookies, session, cache memo

在CodeIgniter中頻繁使用Model在資料量大使用量高的EC網站是不好的選擇,可是EC網站的資料也不適合用靜態頁來處理,畢竟有許多互動的設計若是使用靜態頁那麼就失去意義了,某些(聯絡我們, 用戶條款)之類的到是很適合。
Ex. $this->output->cache($n);
放置在Controler的 $this->load->view($action, $data); 前。

首先在config/autoload.php裡面需要加入相關的help
$autoload['helper'] = array('cookie');

寫入
set_cookie('cookname', $cookdata, 3600);
取得
get_cookie('cookname')
刪除
delete_cookie('cookname');

於多網站共用Code的使用案例上,可是當使用prefix前綴來避免衝突/讀取錯誤的情事。
※全域設定可在 application/config/config.php 檔案中所設置的前綴  $config[‘cookie_prefix’]
※容量(size)大概4K使用,所以資料量大的話會無法儲存,存放於用戶端的瀏覽器內所以瀏覽器有限制存取時會無法使用。

首先在config/autoload.php裡面需要加入相關的help
$autoload['libraries'] = array('session');

寫入
$this->session->set_userdata('sessionname', $cookdata);
取得
$this->session->userdata('sessionname')
刪除
$this->session->unset_userdata('sessionname');
※ 容量(size)大概較Cookies大些但若是無法儲存則表示資料量超過容量限制,另外資料存放在記憶體內,伺服器記憶體管理務必注意。

cache:
$this->load->driver('cache'));


寫入$this->cache->save('cachename', $cookdata, 300); //300=5min
取得
$this->cache->get('cachename')
刪除
$this->cache->delete('cachename');
※ 使用檔案儲存所以資料量不用擔心,不過因為是FILE所以I/O讀取的效率就偏低。

沒有留言: