Codeigniter - 如何避免会话的数据库缓存

Ade*_*Ade 6 php caching codeigniter session-cookies

我正在Codeigniter上开发一个网站(带有购物车),并希望使用sess_use_database设置使用户更难以破解购物车会话.

我还想使用数据库缓存来加速常见的数据库请求(例如'获取类别',因为大多数数据库内容不会定期更改),所以我启用了这个设置:

$db['development']['cache_on'] = TRUE; 
//where 'development' is my environment
Run Code Online (Sandbox Code Playgroud)

因此,我发现会话内容没有刷新,例如在此请求上:

$this->basket_contents = array_values($this->session->userdata('basket_contents'));
Run Code Online (Sandbox Code Playgroud)

另外,我试过这个:

$this->db->cache_off();
Run Code Online (Sandbox Code Playgroud)

...在会话请求之前,但它没有解决问题(我假设它不是直接的DB请求).

我的会话设置如下:

$config['sess_cookie_name']     = 'str_session';
$config['sess_expiration']      = 7200;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;
Run Code Online (Sandbox Code Playgroud)

我可以阻止缓存与会话相关的数据库请求吗?或者阻止某些表被缓存?

或者是否有另一个(可能是显而易见的)解决方案我没有想过?

提前致谢.

Wan*_*ard 4

在 CodeIgniter 中,缓存是一个全有或全无的解决方案,您无法为单个表启用它。

我能想到的有两种选择: