Я бы не советовал использовать кэширование вывода CodeIgniter. Это работает до контроллера, поэтому вы никогда не попадете в index()
. Маршрутизация не может справиться с этой ситуацией, поскольку она не может определить, является ли клиент мобильным.
Лучше использовать другой метод кэширования, который предлагает CodeIgniter, поскольку он более детализирован, вы можете кэшировать отдельные представления. http://codeigniter.com/user_guide/libraries/caching.html
function index()
{
// should put this in the __construct() of this controller or in your MY_Controller.php
$this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));
if ($this->agent->is_mobile())
{
redirect('Mobile');
}
else
{
// if this doesn't get us the output, recreate and store it
if(!$output = $this->cache->get('controllername_index_output'))
{
$output = $this->load->view('home', $data, TRUE);
$this->cache->save('controllername_index_output', $output, 7200);
}
// now we surely have the output ready, whether it was cached or not
$this->output->set_output($output);
}
}