如何在Codeigniter中缓存相同URL的普通视图和移动视图?

如何在Codeigniter中缓存相同URL的普通视图和移动视图?,codeigniter,caching,mobile,url-routing,Codeigniter,Caching,Mobile,Url Routing,我正在运行一个检查,检查用户是否在移动设备或桌面上浏览,并基于此,我调用给定URL的普通视图,或调用相同URL的移动视图。因此URL和控制器功能是相同的,只是视图不同(移动或桌面)。 我使用Codeigniter内置的输出缓存,但是如果第一个打开页面的用户加载了正常的_视图,它会将其放入输出缓存,直到缓存过期,无论用户是从手机还是PC浏览,都只加载该视图 我如何解决这个问题而不为移动版和桌面版创建不同的URL?有什么方法可以单独缓存视图吗?通过使用Codeigniter中的用户代理类库,我们可以

我正在运行一个检查,检查用户是否在移动设备或桌面上浏览,并基于此,我调用给定URL的普通视图,或调用相同URL的移动视图。因此URL和控制器功能是相同的,只是视图不同(移动或桌面)。 我使用Codeigniter内置的输出缓存,但是如果第一个打开页面的用户加载了正常的_视图,它会将其放入输出缓存,直到缓存过期,无论用户是从手机还是PC浏览,都只加载该视图


我如何解决这个问题而不为移动版和桌面版创建不同的URL?有什么方法可以单独缓存视图吗?

通过使用Codeigniter中的用户代理类库,我们可以这样实现

例:

注意:我的建议是你可以使用任何CSS框架,比如Bootstrap吗 无需为移动视图开发单独的视图。它可以根据设备大小进行调整


你误解了我的问题。你给我写的东西已经完成并发挥作用了。设计不应该是响应性的,因为移动站点更像是一个移动应用程序,但这不是本文的主题。我的逻辑与您的几乎相同,但如果使用$this->output->cache(n),将要打开的第一个视图将被缓存,并且无论代理是什么,URL都将被缓存,并且它将显示第一个加载的URL,直到缓存过期,然后,它将仅在第一次打开视图时再次缓存URL。嗨@MarkC,你让它工作了吗?需要使用codeigniter在站点中实现缓存,我在问自己如何实现
 $this->load->library('user_agent');
    if ($this->agent->is_mobile('iphone'))
    {
        $this->load->view('iphone/home');  //iphone view page
    }
    else if ($this->agent->is_mobile())
    {
        $this->load->view('mobile/home'); //mobile view page
    }
    else
    {
        $this->load->view('web/home'); // web page view
    }
Bootstrap easily and efficiently scales your websites and applications with a single code base, from phones to tablets to desktops with CSS media queries.