缓存的主要目的之一是节省资源,而不是像每次请求都要点击数据库。鉴于此,我对于Codeigniter在遇到cache()
语句时在控制器中所做的事情感到困惑。
例如:
$this->output->cache(5);
$data=$this->main_model->get_data_from_database();
$this->load->view("main/index", $data);
我意识到缓存的main/index
html文件将在接下来的5分钟内显示,但在这5分钟内控制器仍会执行get_data_from_database()
步骤?或者它会跳过它吗?
注意:the Codeigniter documentation表示你可以将cache()
语句放在控制器函数的任何地方,这让我更加困惑于执行什么。
答案 0 :(得分:1)
我认为可以验证是否可以在控制器中启用Profiler并检查是否有任何查询。如果您在生产环境中使用它,请确保仅为您的IP启用此功能。
$this->output->enable_profiler(TRUE);
- 编辑1 -
这只能看一次。存储缓存页面后不久,配置文件结果将不再可见(因此您可能希望删除该文件并刷新页面)。
- 编辑2 -
您也可以使用:
log_message('info', 'message');
在模型中,然后将config.php,$ config ['log_threshold']更改为3并检查日志文件。
- 编辑3 -
除非您已启用数据库缓存,否则确保将完成选择。在这种情况下,在缓存文件夹中,您将看到缓存的数据库选择。
答案 1 :(得分:1)
我可以回答我自己的问题。除了缓存输出之外的控制器功能中的NOTHING在设置缓存期间执行。
要自己测试,请执行数据库INSERT
或以某种方式记录的内容(例如,写入空白文件)。
我在cache()
语句下面添加了以下代码,它仅在我第一次加载控制器函数时插入some_table
表,而不是第二次(在5分钟范围内)。< / p>
$this->db->insert('some_table', array('field_name' => 'value1') );