<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog and Web &#187; Code Igniter</title>
	<atom:link href="http://blogandweb.com/tag/code-igniter/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogandweb.com</link>
	<description>Recursos para Blog y Web</description>
	<lastBuildDate>Tue, 08 Nov 2011 23:09:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Code Igniter: Trabajando con Vistas.</title>
		<link>http://blogandweb.com/php/code-igniter-vistas/</link>
		<comments>http://blogandweb.com/php/code-igniter-vistas/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 02:30:17 +0000</pubDate>
		<dc:creator>Jesus Yepes</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Code Igniter]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://blogandweb.com/?p=2796</guid>
		<description><![CDATA[Este artículo es una excelente colaboración de Jesus Yepes, segundo de la serie de artículos de introducción a Code Igniter. Bienvenidos a la segunda parte de nuestra introducción a Code Igniter. En la primera parte, vimos muy por encima qué es Code Igniter y cómo usarlo, cuales son sus características y modo de uso, qué [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="introduccion-code-igniter" border="0" alt="introduccion-code-igniter" src="http://bw.imagenes.info/wp-content/uploads/2010/07/introduccioncodeigniter.jpg" width="250" height="270" /></p>
<p><small>Este artículo es una excelente colaboración de <a href="http://blog.jesusyepes.com/">Jesus Yepes</a>, segundo de la serie de artículos de <strong>introducción a <a href="http://blogandweb.com/tag/code-igniter/">Code Igniter</a></strong>.</small></p>
<p>Bienvenidos a la segunda parte de nuestra <a href="http://blogandweb.com/php/introduccion-a-code-igniter-i/">introducción a Code Igniter</a>. En la primera parte, vimos muy por encima qué es <strong>Code Igniter</strong> y cómo usarlo, cuales son sus características y modo de uso, qué es MVC, cuales son los principales ficheros de Code Igniter para su configuración. En esta segunda parte, expondremos un par de ejemplos sobre<strong> cómo usar las vistas</strong>, cuándo, y cómo podemos hacer que el desarrollo de nuestra aplicación web sea más rápido gracias a estas. </p>
<h4>Empezamos, ¿qué es una vista?</h4>
<p>Las <strpmg>vistas</strong> se almacenarán en nuestro directorio<em> /application/views </em>de nuestro <a href="http://blog.jesusyepes.com/administracion-de-sistemas/el-servidor-web-perfecto-macos-mamp/">servidor local</a>. Las vistas son, básicamente, código html. Vamos a hacer un ejemplo, que simplemente llame a la vista <em>blogandweb.php</em> y muestre su contenido, que será simplemente &quot;Buenas, usuarios de blog and web!&quot;.</p>
<p><small><strong>Varias notas:</strong> nos vamos a crear un controlador, que será el que usemos por defecto, y lo llamaremos &quot;controlador&quot; (Revisa el <a href="http://blogandweb.com/php/introduccion-a-code-igniter-i/">primer capítulo</a> si tienes dudas, de todas formas, los controladores van en <em>application/controllers/</em>). El controller, <em>Controlador.php.</em></small></p>
<pre><code>class Controlador extends Controller {

function __construct()
{
parent::Controller();
}
function index()
{
$this-&gt;load-&gt;view('blogandweb');
}
}</code></pre>
<p>La vista, <em>blogandweb.php</em></p>
<pre><code>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Bienvenidos a blog and web!&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;h1&gt;Bienvenidos a blog and web!&lt;/h1&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>Una vez creados, nos iremos a <em>application/config/routes.php</em>, y estableceremos el controlador por defecto a “controlador”</p>
<pre><code>
$route['default_controller'] = &quot;controlador&quot;;
$route['scaffolding_trigger'] = &quot;&quot;;
</code></pre>
<p>Tal y como dijimos en el capítulo uno, cuando alguien entre directamente a nuestra web y no pida explícitamente qué controlador y qué método quiere ver, por defecto usaremos el controlador “controlador” y el método por defecto (vacío), es decir, la función index() de ese controlador. </p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="code-igniter-hola-mundo" border="0" alt="code-igniter-hola-mundo" src="http://bw.imagenes.info/wp-content/uploads/2010/07/codeigniterholamundo.png" width="600" height="521" /> </p>
<p>El ejemplo no es muy útil, pero es un comienzo&#8230; </p>
<h4>Pasándole variables a nuestra vista</h4>
<p><span id="more-2796"></span></p>
<p>Vale, hagamos que la vista sea algo más dinámica. Digamos que tenemos el nombre del usuario en una variable, y que queremos mostrarlo en nuestra página. Para ello, tenemos el segundo parámetro de <code>$this-&gt;load-&gt;view()</code>. Un array. Todos los items de ese array, estarán <strong>disponibles en la vista</strong>, de forma que los podremos usar dónde queramos. <strong>El nombre de la variable, será el índice del array</strong>. Supongamos el siguiente código en el método index del controlador. </p>
<pre><code>
function index()
{
$data = array(
'usuario' =&gt; 'Jhon Locke',
'mensaje' =&gt; 'Has encontrado la escotilla!'
);
$this-&gt;load-&gt;view('blogandweb', $data);
}
</code></pre>
<p>y el siguiente para la vista <em>blogandweb.php</em></p>
<pre><code>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Bienvenidos a blog and web!&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;h1&gt;Buenas &lt;?php echo $usuario; ?&gt;, Bienvenidos a blog and web!&lt;/h1&gt;
&lt;p&gt;&lt;?php echo $mensaje; ?&gt;&lt;/p&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>Obtendríamos esto&#8230; </p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="code-igniter-hola-mundo-2" border="0" alt="code-igniter-hola-mundo-2" src="http://bw.imagenes.info/wp-content/uploads/2010/07/codeigniterholamundo2.png" width="600" height="522" /> </p>
<p>Si por ejemplo, estuviéramos desarrollando un blog, pasaríamos a la <strong>vista</strong> todos los posts, y esta los recorrería y los mostraría. Pero dejemos este tipo de ejemplos para posteriores capítulos. </p>
<h4>Llamando a vistas dentro de las vistas</h4>
<p>Esto es una forma de dejar todo el código mucho mas claro. Vamos a usar una forma similar a la que usa <a href="http://blogandweb.com/wordpress/">WordPress</a>, es decir, WordPress tiene el “gordo” de la página, y desde este fichero, llama a otro que genera la cabecera, a otro que genera el sidebar, y a otro que genera el footer. Lo juntamos todo, y tenemos nuestra web. Vamos a hacer que nuestra <strong>vista</strong> tenga un poco.</p>
<p class="nota"><small><strong>Nota:</strong> No vamos a aplicar ningún estilo, no pretendo que la página luzca bien, pretendo que se entienda qué son y que ventajas tienen las vistas en Code Igniter.</small></p>
<pre><code>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Bienvenidos a blog and web!&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt; 

&lt;/head&gt;
&lt;body&gt;

&lt;ul id=&quot;menu&quot;&gt;
&lt;a href=&quot;#&quot;&gt;inicio&lt;/a&gt;
&lt;a href=&quot;#&quot;&gt;Una página&lt;/a&gt;
&lt;a href=&quot;#&quot;&gt;Otra página&lt;/a&gt;
&lt;/ul&gt;

&lt;h1&gt;Buenas &lt;?php echo $usuario; ?&gt;, Bienvenidos a blog and web!&lt;/h1&gt;
&lt;p&gt;&lt;?php echo $mensaje; ?&gt;&lt;/p&gt;

&lt;div id=&quot;lateral&quot;&gt;
&lt;p&gt;Estamos en el lateral.&lt;/p&gt;
&lt;p&gt;Contenido de prueba&lt;/p&gt;
&lt;/div&gt;

&lt;div id=&quot;footer&quot;&gt;
&lt;p&gt;Esto es el footer. Información de copyright y esas cosas&lt;/p&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>Así la página tiene algo más de chicha. Tiene un menú en la cabecera, el contenido, un sidebar, y el pié de página.</p>
<h4>Dinámico y fácil de mantener con Code Igniter</h4>
<p>Vamos a partir nuestro html en varias partes, de forma que podamos reutilizarlo en todas las páginas que vayamos creando. Por un lado, crearemos una <sstrong>vista</strong> para la cabecera, que será la encargada de mostrar la cabecera en sí, la apertura del documento html, título de la página y etiquetas meta. Por otro lado, tendremos el sidebar, que será el encargado de mostrar todo lo que saldrá en el lateral (imaginad un blog, pues las categorías, comentarios recientes, etc, etc.). Por último, el footer, que mostrará el pié de la página y el cierre del documento html. <em>header.php</em></p>
<pre><code>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Bienvenidos a blog and web!&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt; 

&lt;/head&gt;
&lt;body&gt;

&lt;ul id=&quot;menu&quot;&gt;
&lt;a href=&quot;#&quot;&gt;inicio&lt;/a&gt;
&lt;a href=&quot;#&quot;&gt;Una página&lt;/a&gt;
&lt;a href=&quot;#&quot;&gt;Otra página&lt;/a&gt;
&lt;/ul&gt;

sidebar.php

&lt;div id=&quot;lateral&quot;&gt;
&lt;p&gt;Estamos en el lateral.&lt;/p&gt;
&lt;p&gt;Contenido de prueba&lt;/p&gt;
&lt;/div&gt;

footer.php

&lt;div id=&quot;footer&quot;&gt;
&lt;p&gt;Esto es el footer. Información de copyright y esas cosas&lt;/p&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>y la vista principal (<em>blogandweb.php</em>), quedaría así:</p>
<pre><code>&lt;?php $this-&gt;load-&gt;view('header'); ?&gt;

&lt;h1&gt;Buenas &lt;?php echo $usuario; ?&gt;, Bienvenidos a blog and web!&lt;/h1&gt;
&lt;p&gt;&lt;?php echo $mensaje; ?&gt;&lt;/p&gt;

&lt;?php $this-&gt;load-&gt;view('sidebar'); ?&gt;

&lt;?php $this-&gt;load-&gt;view('footer'); ?&gt;</code></pre>
<p>Hemos llamado a otras <strong>vistas</strong> desde nuestra <strong>vista principal</strong>. También podríamos, desde el controlador, llamar a <strong>todas las vistas necesarias</strong>. Esto es indiferente, pero a mi me gusta más hacerlo como he explicado ya que me parece más claro y rápido que llamando a todas las vistas desde el controlador.</p>
<h4>El tercer parámetro de la llamada a la vista, ese gran desconocido</h4>
<p>Hemos visto que la llamada a una vista con <code>$this-&gt;load-&gt;view();</code> acepta dos parámetros. La <strong>vista</strong> que queremos cargar y un array que serán convertidas a variables y estarán disponibles en la vista. Pues bien, hay un tercero que por defecto es false, que indica si queremos <strong>devolver el código que genera la vista para almacenarlo en una variable</strong> y después hacer con él lo que creamos necesario. Por ejemplo: </p>
<pre><code>$html = $this-&gt;load-&gt;view('blogandweb', $data, TRUE);</code></pre>
<p>La variable <code>$html</code> tendría todo el código fuente, lo que hagamos con ella ya es otra cosa. Pues bien, hasta aquí el capítulo de las <strogn>vistas en Code Igniter</strong>. Espero que os haya sido ameno y que os sirva de algo. Como siempre, espero vuestros comentarios con dudas, sugerencias, lo que sea.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogandweb.com/php/code-igniter-vistas/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Introducción a Code Igniter</title>
		<link>http://blogandweb.com/php/introduccion-a-code-igniter-i/</link>
		<comments>http://blogandweb.com/php/introduccion-a-code-igniter-i/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 03:18:47 +0000</pubDate>
		<dc:creator>Jesus Yepes</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Code Igniter]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://blogandweb.com/?p=2780</guid>
		<description><![CDATA[Este artículo es una excelente colaboración de Jesus Yepes, a quien puedes leer en su blog. Recuerda que la invitación esta abierta para publicar tus artículos. En este pequeño post voy a hacer un breve repaso sobre las razones más importantes de usar un Framework para php, para realizar nuestros desarrollos de forma más rápida [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="introduccion-code-igniter" src="http://bw.imagenes.info/wp-content/uploads/2010/07/introduccioncodeigniter.jpg" border="0" alt="introduccion-code-igniter" width="250" height="270" /></p>
<p><small>Este artículo es una excelente colaboración de <a href="http://blog.jesusyepes.com/">Jesus Yepes</a>, a quien puedes leer en su blog. Recuerda que la invitación esta abierta para <a href="http://blogandweb.com/escribe-un-tutorial/">publicar tus artículos</a>.</small></p>
<p>En este pequeño post voy a hacer un breve repaso sobre las razones más importantes de usar un <strong>Framework para php</strong>, para realizar nuestros desarrollos de forma más rápida y eficiente (y por qué está de moda, todo hay que decirlo).</p>
<p>Lo primero que deberías hacer, es ver en qué posición estás. Un <strong>framework</strong> está pensado para gente que tiene un dominio, al menos medio, del lenguaje de programación en el que está hecho (en este caso <a href="http://blogandweb.com/php/">PHP</a>) y que quieren realizar sus proyectos de una forma más ordenada rápida. Si estás empezando con php este NO es el camino que debes seguir. Deberías empezar aprendiendo PHP “a pelo” para después elegir el mejor framework para tu caso.También es de agradecer estar familiarizado con el modelo de programación orientada a objetos en PHP.<br />
<span id="more-2780"></span></p>
<h4>¿Por qué Code Igniter?</h4>
<p>Cuando me picó el gusanillo de los frameworks en PHP, estuve buscando opiniones sobre cual usar. Obviamente, cada uno tiene sus preferencias, pero en algo que todos coinciden es que <strong>Code Igniter</strong> tiene una gran <strong>documentación</strong> y <strong>comunidad</strong>, requisito indispensable si estás empezando en este mundillo, ya que tarde o temprano tendremos alguna duda y a alguien le tendremos que preguntar&#8230; ¿no?</p>
<p>Además, <strong>Code Igniter</strong> es altamente extensible, es rápido, soporta PHP 4 (en la última versión estable, 1.7.2). Las futuras versiones no soportarán PHP 4, requerirán PHP 5 para funcionar.</p>
<p><strong>Code Igniter</strong> utiliza <em>MVC</em>, un estilo de programación en el que la aplicación está separada entres capas:</p>
<ul>
<li><strong>Modelo</strong>: Es el que procesa / obtiene los datos. Generalmente, lo usaremos sobre todo para gestionar la entrada y salida de los datos en nuestra base de datos.</li>
<li><strong>Vista</strong>: Llamada desde el controlador, es la que forma los datos para representarlos en pantalla. En Code Igniter ( y cualquier framework para web) es la que montará todo el código html).</li>
<li><strong>Controlador</strong>: Como su nombre indica, es el que “controla” que pasa en nuestra aplicación.Básicamente, y a grandes rasgos, un controlador recibe una petición, obtiene datos de un modelo, los procesa, y se los pasa a la vista para que los muestre de forma adecuada.</li>
</ul>
<p>Además, en Code Igniter tenemos <em>helpers, hooks y librerías</em>, pero de esto ya hablaremos más adelante. A grandes rasgos, los <em>helpers</em> son un conjunto de funciones agrupadas por funcionalidad, es decir, tenemos un <em>helper</em> para crear formularios, tenemos un <em>helper</em> para trabajar con fechas, etc. Las <em>librerías</em>, son clases. Tenemos librerías para <a href="http://blog.jesusyepes.com/codeigniter/problemas-al-enviar-emails-usando-la-libreria-nativa-de-code-igniter/">enviar emails</a>, tenemos librerías para validar los datos que nos llegan de un formulario, etc.</p>
<h4>Hola Mundo!</h4>
<p class="nota"><small><strong>Nota:</strong> Es necesario tener un servidor web que soporte php, instalado, configurado y funcionando. Para las pruebas, usaremos una máquina local con MAMP corriendo en MacOs.Puedes usar Wamp en windows, Mamp en mac o Mamp en linux, o puedes montar <a href="http://blog.jesusyepes.com/diseno-web/entorno-de-desarrollo-web-perfecto-en-mac-os-x/">Apache +PHP + MySQL</a> a mano.</small></p>
<p>Empezamos con una aplicación de ejemplo, dejémonos de rollos. Vamos a <a href="http://codeigniter.com">Codeigniter.com</a> y nos descargamos la última versión (1.7.2 a la hora de escribir esto). Una vez la descargamos, veremos que tenemos dos directorios: <em>System</em> y <em>user_guide</em>. La carpeta <em>user_guide</em> es la documentación que podemos encontrar en su web en formato HTML,no es necesario para que nuestra aplicación funcione.</p>
<p>La descargamos y descomprimimos en un directorio de accesible por nuestro servidor web.Tendremos el directorio <em>system</em> (que contiene el framework en sí), el directorio <em>application</em> que veis (está dentro de <em>system</em>, solo que yo lo muevo fuera para poder tenerlo todo más separado) y el archivo <em>index.php</em>, que es el encargado de poner en marcha todo el framework. El directorio <em>user_guide</em> y el archivo <em>license</em> los he borrado, por que no son necesarios para el uso del framework.</p>
<p><img class="aligncenter" title="code-igniter-directorios" src="http://bw.imagenes.info/wp-content/uploads/2010/07/codeigniterdirectorios.png" border="0" alt="code-igniter-directorios" width="600" height="349" /></p>
<p>Lo primero que debemos hacer es editar el fichero <em>application/config/config.php</em> y poner los datos de nuestro servidor, en el primero parámetro, <em>$config['base_url']=http://example.com/;</em> cambiando example.com por nuestra URL, en mi caso: <em>http://localhost/Sites/ci-baw/</em></p>
<p class="nota"><small><strong>Nota:</strong> Aseguraros de terminar siempre la url con: /</small></p>
<p>Ahora, accedemos a dicho directorio mediante nuestro explorador favorito (ni que decir, que para el desarrollo web, <a href="http://blogandweb.com/productos-google/extensiones-chrome-y-firefox-para-bloggers-y-desarrolladores/">Firefox + Firebug</a>)</p>
<p><img class="aligncenter" title="code-igniter-inicio" src="http://bw.imagenes.info/wp-content/uploads/2010/07/codeigniterinicio.png" border="0" alt="code-igniter-inicio" width="600" height="316" /></p>
<p>Podemos ver que todo ha salido bien. Nos sale una página por defecto, en la que nos dice que ha cargado la vista <em>welcome_message.php</em> y que corresponde al controlador <em>controllers/welcome.php</em>.</p>
<p>Bueno, vamos a entrar a ver el código, y a entender por que ha ejecutado el controlador <em>welcome</em> y como se ha cargado la vista.</p>
<p>Abrimos el archivo <em>applicattion/config/routes.php</em>:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="code-igniter-welcome" src="http://bw.imagenes.info/wp-content/uploads/2010/07/codeigniterwelcome.png" border="0" alt="code-igniter-welcome" width="600" height="440" /></p>
<p>Veremos las siguientes líneas de código:</p>
<pre><code>$route['default_controller'] = "welcome";
$route['scaffolding_trigger'] = "";</code></pre>
<p>Eso le está diciendo a <strong>Code Igniter</strong> que el controlador, si no especificamos ninguno,será “<em>welcome</em>”. El parámetro <em>scaffolding_trigger</em> no lo veremos de momento.</p>
<p>Ahora, abrimos el fichero <em>application/controllers/welcome.php</em>.</p>
<pre><code>&lt;?php
class Welcome extends Controller {
function Welcome()
{
parent::Controller();
}

function index()
{
$this-&gt;load-&gt;view('welcome_message');
}
}</code></pre>
<p>Vamos a ver, el controlador se llama siempre igual que el nombre del fichero, pero con la primera en mayúscula, y debe extender siempre la clase <em>Controller</em>. Si declaramos un constructor (por que lo necesitemos), en PHP 4 <em>function Welcome()</em>, en PHP 5 <em>function__construct()</em>, lo primero que debemos hacer siempre dentro de dicho constructor es llamar al constructor de la clase padre, en este caso, <em>parant::Controller()</em>. El constructor lo definiremos cuando necesitemos asignar valores globales para toda la clase, o cargar librerías o <em>helpers</em> que los utilizaremos en toda la clase.</p>
<p>El método<em> index</em>, es el que se ejecuta si no hemos dicho lo contrario. Este método, lo único que hace es cargar una vista, ‘welcome_message’. Si abrimos el fichero <em>application/views/welcome_message.php</em> veremos que contiene el código que genera la página que hemos visto en nuestro explorador.</p>
<p>Ahora, a modo de ejemplo y para terminar, vamos a crear una función dentro del controlador <em>Welcome</em>.</p>
<pre><code>function hola_mundo()
{
echo 'Hola Mundo desde Code Igniter';
}</code></pre>
<p>Visitamos, dicha página con nuestro navegador, en mi caso vamos a:</p>
<pre><code>http://localhost/Sites/ci-baw/index.php/welcome/hola_mundo</code></pre>
<p class="nota"><small><strong>Nota:</strong> Ya veremos pronto como quitar el <em>index.php</em> de ahí en medio.</small></p>
<p>Y hasta aquí esta pequeña introducción, quizá demasiado abstracta, pero necesaria cuando se ve algo nuevo.</p>
<p>Espero vuestros comentarios y sugerencias para los siguientes posts sobre Code Igniter.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogandweb.com/php/introduccion-a-code-igniter-i/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Database Caching 2/18 queries in 0.012 seconds using disk: basic
Object Caching 252/282 objects using disk: basic
Content Delivery Network via bw.imagenes.info

Served from: blogandweb.com @ 2012-02-12 20:59:49 -->
