Codeigniter页面缓存不考虑输入?

时间:2017-02-10 05:38:32

标签: php codeigniter caching

如何让CodeIgniter页面缓存考虑输入?例如,假设我有一个分页系统。启用缓存后,如果我转到第1页,那么第2页(相同的控制器)... CI缓存将返回第1页的内容。

    function my_controller() {
       $this->output->cache(1);

       $page = $this->input->post("page");
       $data = getData($page);

       $this->load->view('my_view', $data);
   }

在上面的示例中,您无法正确浏览页面。即使发布的输入发生变化,它也会继续加载缓存的页面。

如何让缓存系统将$ _POST数据考虑在内,并从缓存的角度将这些数据视为不同的请求?

1 个答案:

答案 0 :(得分:0)

缓存动态内容,其中视图对缓存类没有明显的改变可能会变得混乱......

最简单的解决方案是不要缓存动态页面,它实际上不是缓存的目的,缓存是(至少大部分)静态数据。

你可以做的另一种方法(取决于结果集)是使用javascript和paginate客户端,并使用ajax调用从服务器获取数据,客户端实际上永远不会离开单个视图而只有初始视图将被缓存。

内容多久更改一次?我们是在谈论每一分钟变化的订单列表,还是每月更改一次的产品列表?

如果由ajax加载,那么只需确保你所调用的内容没有暴露给你的缓存(除非内容很少更改)......因为它将从不同的方法调用,这不难确保,并且在页面上加载你可以让它每次调用第一个xx数量的结果,但是在视图的其余部分使用缓存的好处。