<?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>Marcos Fernández &#187; reducir</title>
	<atom:link href="http://www.marcosdev.com/tag/reducir/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marcosdev.com</link>
	<description>Programación de páginas web</description>
	<lastBuildDate>Mon, 28 Sep 2009 07:59:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Videotutorial &#8211; Reducir javascript con PHP</title>
		<link>http://www.marcosdev.com/videotutorial-reducir-javascript-con-php/</link>
		<comments>http://www.marcosdev.com/videotutorial-reducir-javascript-con-php/#comments</comments>
		<pubDate>Fri, 02 May 2008 19:34:50 +0000</pubDate>
		<dc:creator>Marcos Fernández</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[videotutoriales]]></category>
		<category><![CDATA[optimizar]]></category>
		<category><![CDATA[reducir]]></category>
		<category><![CDATA[screecast]]></category>
		<category><![CDATA[videotutorial]]></category>

		<guid isPermaLink="false">http://www.marcosdev.com/?p=8</guid>
		<description><![CDATA[Videotutorial  sobre el tutorial para reducir ficheros javascript con PHP.
Duración: 13:03


Descarga en formato QuickTime 
]]></description>
			<content:encoded><![CDATA[<p>Videotutorial  sobre el tutorial para reducir ficheros javascript con PHP.</p>
<p>Duración: 13:03</p>
<p><span id="more-8"></span></p>
<p><code><img src="http://www.marcosdev.com/wp-content/plugins/flash-video-player/default_video_player.gif" /></code></p>
<p><a href="http://www.marcosdev.com/videos/reducir-js-php.mov">Descarga en formato QuickTime </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcosdev.com/videotutorial-reducir-javascript-con-php/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
<enclosure url="http://www.marcosdev.com/videos/reducir-js-php.mov" length="19057131" type="video/quicktime" />
<enclosure url="http://www.marcosdev.com/videos/reducir-js-php.flv" length="49532051" type="video/x-flv" />
		</item>
		<item>
		<title>Reducir ficheros javascript con PHP</title>
		<link>http://www.marcosdev.com/reducir-ficheros-javascript-con-php/</link>
		<comments>http://www.marcosdev.com/reducir-ficheros-javascript-con-php/#comments</comments>
		<pubDate>Fri, 02 May 2008 14:01:46 +0000</pubDate>
		<dc:creator>Marcos Fernández</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[optimizar]]></category>
		<category><![CDATA[reducir]]></category>

		<guid isPermaLink="false">http://www.marcosdev.com/?p=5</guid>
		<description><![CDATA[Uno de los problemas más habituales hoy en día en el desarrollo de páginas web es la utilización de múltiples ficheros Javascript. Estos ficheros a la mínima que la página sea algo grande, toman un peso muy significativo. Una de las premisas que siempre debemos tener en la cabeza es hacer que nuestra página cargue [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los problemas más habituales hoy en día en el desarrollo de páginas web es la utilización de múltiples ficheros Javascript. Estos ficheros a la mínima que la página sea algo grande, toman un peso muy significativo. Una de las premisas que siempre debemos tener en la cabeza es hacer que nuestra página cargue lo más rápido posible. (El addon para <a title="Página oficial de navegador Firefox" href="http://www.mozilla-europe.org/es/products/firefox/">Firefox</a> llamado <a title="Página oficial de YSlow" href="http://developer.yahoo.com/yslow/">YSlow</a> que se integra con <a title="Página oficial del addon Firebug" href="http://www.getfirebug.com/">Firebug</a> es muy útil para optimizar nuestra página).</p>
<p>Como toda buena práctica de programación, nuestro código incluye sangrías y comentarios. Si no ponemos sangrías nuestro código se hace incomprensible, y si le quitamos los comentarios, dentro de unos meses nos acordaremos de aquel día que decidimos no escribir una frase aclaratoria de que hacía aquella función.</p>
<p><span id="more-5"></span></p>
<p>Por ello, existen multitud de herramientas que permite que a partir de un fichero javascript nuestro, se genere un fichero javascript reducido, es decir, sin espacios, sin comentarios, e incluso ofuscado (cambia nombre a las variables por letras o números y trata de reducir la comprensión del código por alguien que quiera copiarnos o analizarnos para un ataque).</p>
<p>Estas herramientas el problema que tienen es que debes tener un fichero para el desarrollo y luego de haber hecho los cambios oportunos, debes generar el fichero reducido.</p>
<p>En este tutorial veremos como podemos reducir en tiempo real los ficheros Javascript que precise nuestro documento mediante PHP (es necesario tener la versión 5). Además, si nuestra página utiliza más de un fichero js (javascript), lograremos reducir las peticiones al mínimo. Por ejemplo, nuestra página utiliza tres ficheros js nuestros, son tres peticiones. Lograremos reducirlo a únicamente una petición. Caso aparte es cuando debes realizar la inclusión de un fichero js como el de Google Maps, con el cual no puedes utilizar esta técnica.</p>
<p>Vamos manos a la obra.</p>
<p>Lo primero que necesitamos es descargar una librería llamada Jsmin-php. Podéis encontrarlo en su <a title="Página web Jsmin-php" href="http://code.google.com/p/jsmin-php/">página web</a>, y justo en la derecha hay un botón para accionar la <a title="Descarga directa de Jsmin-php" href="http://jsmin-php.googlecode.com/files/jsmin-1.1.1.php">descarga</a>.</p>
<p>Descargamos el dichero jsmin-1.1.1.php (esta era la versión al momento de hacer este tutorial).</p>
<p>Supongamos que tenemos la siguiente estructura de ficheros:</p>
<p style="text-align: center;"><a href="http://www.marcosdev.com/wp-content/imagen-2.png"><img class="alignnone size-medium wp-image-6 aligncenter" title="Estructura de ficheros" src="http://www.marcosdev.com/wp-content/imagen-2.png" alt="" width="143" height="87" /></a></p>
<p style="text-align: left;">En la imagen podemos observar que tenemos un fichero index.php en el cual hay el siguiente código:</p>
<pre class="brush: html">
&lt; !DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/meta&gt;&lt;/head&gt;
&lt;body&gt;
&lt;p id=&#039;parrafo&#039;&gt;Hola&lt;/p&gt;

&lt;script type=&#039;text/javascript&#039; src=&#039;test.js&#039;&gt;&lt;/script&gt;
&lt;script type=&#039;text/javascript&#039; src=&#039;test2.js&#039;&gt;&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Cómo se puede observar es un documento en blanco con un párrafo en el cual está escrito la palabra Hola. Este párrafo tiene como identificador único el id &#8216;parrafo&#8217;.</p>
<p>Más adelante podemos ver la llamada a dos ficheros js externos al documento. Cómo se puede apreciar, he puesto las inclusiones al final del documento, justo antes del final del body. Esto es una de las pautas a la hora de optimizar el rendimiento de una página web. En otro tutorial trataremos de una manera más profunda este tema.</p>
<p>El contenido de los ficheros js es el siguiente</p>
<p>Fichero test.js</p>
<pre class="brush: jscript">
/*
Esto es un fichero de prueba js
Conjunto de comentarios que explican el funcionamiento de este js
El código siguiente sustuirá el texto interior del párrafo identificado con el id parrafo
*/

document.getElementById(&#039;parrafo&#039;).innerHTML=&#039;esto funciona&#039;;
</pre>
<p>Fichero test2.js</p>
<pre class="brush: jscript">
//Comentario: esto va a mostrar un mensaje de alerta
alert(&#039;hola mundo&#039;);
</pre>
<p>El código del fichero test.js lo que hace es buscar dentro del documento un elemento que tenga como identificador &#8216;parrafo&#8217; y le sustituye su contenido por un texto &#8216;esto funciona&#8217;.</p>
<p>El código del fichero test2.js lo que hace es mostrar un mensaje.</p>
<p>En ambos documentos se pueden ver muchos comentarios. Estos comentarios están bien para nosotros pero  lo que hacen es hacer más lenta la carga de la página ya que el fichero tiene un mayor fichero.</p>
<p>Vamos a comenzar a solucionar este problema.</p>
<p>Para ello, lo primero que debemos hacer es crear un fichero php al cual le podemos llamar scripts.php. Este fichero tiene la función de solicitar los ficheros js que necesitemos, reducirlos y generar un documento único.</p>
<p>Para que el contenido final del documento sea entendido por el navegador como código javascript y no otro tipo de lenguaje debemos incluir como primera línea de nuestro fichero scripts.php el siguiente código:</p>
<pre class="brush: php">

header(&quot;content-type: application/x-javascript&#039;);
</pre>
<p>Ahora debemos incluir la librería jsmin que hemos descargado y la cual se encargará de optimizar el código:</p>
<pre class="brush: php">

require_once &#039;jsmin-1.1.1php&#039;;
</pre>
<p>La parte que viene ahora es muy sencilla. Debemos ejecutar la siguiente línea por cada fichero js que queramos llamar. En nuestro caso será dos veces:</p>
<pre class="brush: php">

echo JSMin::minify(file_get_contents(&#039;test.js&#039;));

echo JSMin::minify(file_get_contents(&#039;test2.js&#039;));
</pre>
<p><em><strong>JSMin:minify</strong></em> es la orden que se encarga de reducir un determinado código. <em><strong>file_get_contents</strong></em> lo que hace es obtener el contenido de un determinado fichero. Por lo tanto esta orden lo que hace es obtiene el código de nuestros ficheros js, lo reduce y mediante la orden echo lo vuelca en pantalla, en nuestro caso, produciendo un nuevo fichero js.</p>
<p>El resultado es el siguiente:</p>
<pre class="brush: jscript">

document.getElementById(&#039;parrafo&#039;).innerHTML=&#039;esto funciona&#039;;
alert(&#039;hola mundo&#039;);
</pre>
<p>Cómo se puede observar ya no hay comentarios. Si el código tuviese sangrías o fuera más complejo, se podría observar muchas más diferencias.</p>
<p>Ahora ya sólo nos queda retocar el fichero index.php. Vamos a decirle que en vez de utilizar los dos ficheros js, utilice únicamente el fichero php que hemos generado. Con ello matamos dos pájaros de un tiro: reducimos las peticiones de 2 ficheros a 1, y generamos código reducido. Para ello sustituimos las siguientes líneas:</p>
<pre class="brush: html">

&lt;script type=&#039;text/javascript&#039; src=&#039;test.js&#039;&gt;&lt;/script&gt;

&lt;script type=&#039;text/javascript&#039; src=&#039;test2.js&#039;&gt;&lt;/script&gt;
</pre>
<p>Por esta</p>
<pre class="brush: html">

&lt;script type=&#039;text/javascript&#039; src=&#039;scripts.php&#039;&gt;&lt;/script&gt;
</pre>
<p>Listo. Ya tenemos nuestra página web con el js reducido y además hemos reducido el número de peticiones.</p>
<p>Espero que esto os pueda ser útil.</p>
<p><a href="http://www.marcosdev.com/wp-content/reducir-js-php.zip">Ficheros del tutorial Reducir Js con PHP</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcosdev.com/reducir-ficheros-javascript-con-php/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>
