Cachear el resultado de un widget

Buenas,

Vamos a ver, tengo un widget que me pilla los últimos tweets de mi usuario de twitter (funciona perfecto).

El tema es que no quiero que cada vez que entre a la página, tenga que hacer la llamada a la api de twitter. Me gustaría guardar el código generado por el widget, durante, por ejemplo, 5 minutos.

Se que no debe ser muy complicado, pero debo andar algo espeso por que no se como hacerlo… a ver su alguien me orienta un poco.

Saludos

La llamada a la api la hace por CURL o la hace por js??

si es por js, cual es el problema de que la haga?

Saludos,




if(!($content=Yii::app()->cache->get('twitter'))){

 	$content=$this->widget('myTwitterWdiget',array('myOption'=>$myValue),true);

	Yii::app()->cache->set('twitter',$content,5*60);

}

echo $content;



Si la llamada la hace por JS, con lo que te paso el usuario anterior, solo cacheas el pedido a el JS para que lo haga, no el resultado del pedido.

No no, va por CURL, no uso JS. Probaré lo que ha dicho Gustavo y mañana os digo algo

Gracias.

Gracias de nuevo por las respuestas. Lo he hecho de la siguiente forma>




class TwitterWidget extends CWidget{


    public $username = 'miusuer';

    public $cuantos = 3;

    private $tweets;




    public function init(){

        if ($this->beginCache('widgets.twitter', array('duration' => '20'))){

            Yii::import('application.extensions.*');

            require_once('Zend/Service/Twitter/Search.php');

            $ts = new Zend_Service_Twitter_Search('json');

            $tmp = $ts->search('from:' . $this->username);

            $this->tweets = (isset($tmp['results']) && count($tmp['results'])) ? $tmp['results'] : false;

            unset($tmp);

            $this->endCache();

        }

    }







    public function run(){

        if (!$this->tweets)

            $this->tweets = array();


        $this->render('twitter', array(

            'tweets' => $this->tweets,

        ));

    }

}



Me molaste un poco la condicion del if para empezar la cache, ahora entiendo el sentido del dummyCache que lei en la documentacion.

La idea que tengo es no poner las llamadas a la cache en el template, asi que lo he puesto dentro del init del widget, que supongo que es su sitio.

Si alguien conoce una forma mejor, por favor que me la diga para seguir aprendiendo.

De nuevo mil gracias a todos