<?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"
	>

<channel>
	<title>Jaccon</title>
	<atom:link href="http://jaccon.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://jaccon.com.br</link>
	<description>Tecnologia, Software Livre, Desenvolvimento WEB, Engenharia e utilidades Geeks</description>
	<pubDate>Sat, 20 Mar 2010 19:40:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Clean URL: utilizando o mod_rewrite do Apache para criar clean url&#8217;s</title>
		<link>http://jaccon.com.br/2010/03/clean-url-utilizando-o-mod_rewrite-do-apache-para-criar-clean-urls/</link>
		<comments>http://jaccon.com.br/2010/03/clean-url-utilizando-o-mod_rewrite-do-apache-para-criar-clean-urls/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 19:38:51 +0000</pubDate>
		<dc:creator>jaccon</dc:creator>
		
		<category><![CDATA[Todos]]></category>

		<guid isPermaLink="false">http://jaccon.com.br/?p=2368</guid>
		<description><![CDATA[Neste vídeo você aprenderá como criar uma regra de clean url para montar uma url mais limpa para seu website.
Vale a pena conferir

Veja o modelo de .htaccess para montar uma clean url

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)_ index.php?pageid=$1

]]></description>
			<content:encoded><![CDATA[<p>Neste vídeo você aprenderá como criar uma regra de clean url para montar uma url mais limpa para seu website.</p>
<p>Vale a pena conferir<br />
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/CnQnx4LXeOM&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/CnQnx4LXeOM&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>Veja o modelo de .htaccess para montar uma clean url</p>
<p><text area><br />
Options +FollowSymLinks<br />
RewriteEngine on<br />
RewriteRule (.*)_ index.php?pageid=$1<br />
</text area></p>
]]></content:encoded>
			<wfw:commentRss>http://jaccon.com.br/2010/03/clean-url-utilizando-o-mod_rewrite-do-apache-para-criar-clean-urls/feed/</wfw:commentRss>
		</item>
		<item>
		<title>XBOX360: construindo um laptop com um XBOX 360</title>
		<link>http://jaccon.com.br/2010/03/xbox360-construindo-um-laptop-com-um-xbox-360/</link>
		<comments>http://jaccon.com.br/2010/03/xbox360-construindo-um-laptop-com-um-xbox-360/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 17:50:57 +0000</pubDate>
		<dc:creator>jaccon</dc:creator>
		
		<category><![CDATA[Todos]]></category>

		<guid isPermaLink="false">http://jaccon.com.br/?p=2366</guid>
		<description><![CDATA[Já imaginou criar um laptop baseado em um XBOX360 ? pois é Ben Heckdorns fez um veja como ficou na imagem abaixo. Útil ? talvez não mas um pouco criativo.

]]></description>
			<content:encoded><![CDATA[<p>Já imaginou criar um laptop baseado em um XBOX360 ? pois é Ben Heckdorns fez um veja como ficou na imagem abaixo. Útil ? talvez não mas um pouco criativo.</p>
<p><img src="http://hackadaycom.files.wordpress.com/2010/03/2k-dollar-360-laptop.jpg" alt="XBOX360 laptop" /></p>
]]></content:encoded>
			<wfw:commentRss>http://jaccon.com.br/2010/03/xbox360-construindo-um-laptop-com-um-xbox-360/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quadcopter: Helicóptero controlado por comando de voz</title>
		<link>http://jaccon.com.br/2010/03/quadcopter-helicoptero-controlado-por-comando-de-voz/</link>
		<comments>http://jaccon.com.br/2010/03/quadcopter-helicoptero-controlado-por-comando-de-voz/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 17:45:27 +0000</pubDate>
		<dc:creator>jaccon</dc:creator>
		
		<category><![CDATA[Todos]]></category>

		<guid isPermaLink="false">http://jaccon.com.br/?p=2364</guid>
		<description><![CDATA[Neste vídeo você poderá conferir um Quadcopter ( helicópter com quatro hélices ) que é controlado por comando de voz. O interessante que o software que controla o dispositivo roda em uma interface baseada em Iphone Apps.

]]></description>
			<content:encoded><![CDATA[<p>Neste vídeo você poderá conferir um Quadcopter ( helicópter com quatro hélices ) que é controlado por comando de voz. O interessante que o software que controla o dispositivo roda em uma interface baseada em Iphone Apps.</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/7nUq28utuGM&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/7nUq28utuGM&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://jaccon.com.br/2010/03/quadcopter-helicoptero-controlado-por-comando-de-voz/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Steve Jobs: CEO da Apple fala sobre o transplante que fará no Tennessee</title>
		<link>http://jaccon.com.br/2010/03/steve-jobs-ceo-da-apple-fala-sobre-o-transplante-que-fara-no-tennessee/</link>
		<comments>http://jaccon.com.br/2010/03/steve-jobs-ceo-da-apple-fala-sobre-o-transplante-que-fara-no-tennessee/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 17:37:33 +0000</pubDate>
		<dc:creator>jaccon</dc:creator>
		
		<category><![CDATA[Todos]]></category>

		<category><![CDATA[steve jobs fará transplante]]></category>

		<category><![CDATA[transplante de steve jobs]]></category>

		<guid isPermaLink="false">http://jaccon.com.br/?p=2361</guid>
		<description><![CDATA[Steve Jobs fala em uma coletiva sobre o transplante que fará no estado do Tennessee

]]></description>
			<content:encoded><![CDATA[<p>Steve Jobs fala em uma coletiva sobre o transplante que fará no estado do Tennessee</p>
<p><embed src='http://gov.ca.gov/player-licensed-viral.swf' height='230' width='340' bgcolor='DFDFDF' allowscriptaccess='always' allowfullscreen='true' flashvars='&#038;backcolor=DFDFDF&#038;dock=false&#038;file=http%3A%2F%2Fwww.dot.ca.gov%2Fgovflash%2F20100319_stanford.flv&#038;frontcolor=3F3F3F&#038;icons=false&#038;image=http%3A%2F%2Fgov.ca.gov%2Fimages%2Fessays%2F0319201001.jpg&#038;lightcolor=3F3F3F&#038;plugins=viral-2d&#038;stretching=fill'/></p>
]]></content:encoded>
			<wfw:commentRss>http://jaccon.com.br/2010/03/steve-jobs-ceo-da-apple-fala-sobre-o-transplante-que-fara-no-tennessee/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Insight for Search: Utilizando na prática o Google Insights</title>
		<link>http://jaccon.com.br/2010/03/google-insight-for-search-utilizando-na-pratica-o-google-insights/</link>
		<comments>http://jaccon.com.br/2010/03/google-insight-for-search-utilizando-na-pratica-o-google-insights/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 15:11:40 +0000</pubDate>
		<dc:creator>jaccon</dc:creator>
		
		<category><![CDATA[Todos]]></category>

		<guid isPermaLink="false">http://jaccon.com.br/?p=2358</guid>
		<description><![CDATA[Neste vídeo abaixo desenvolvido pela Blue Systems explica como utilizar o Google Insights for search para buscar melhores palavras e termos para seus conteúdos e com isso ajudar a rankear na busca orgânica do Google. * IMPORTANTE: o que mostraremos no vídeo abaixo é apenas um dos recursos de SEO que devem ser praticados para [...]]]></description>
			<content:encoded><![CDATA[<p>Neste vídeo abaixo desenvolvido pela <a href="http://www.bluesystems.com.br" target="_blank">Blue Systems</a> explica como utilizar o Google Insights for search para buscar melhores palavras e termos para seus conteúdos e com isso ajudar a rankear na busca orgânica do Google. * IMPORTANTE: o que mostraremos no vídeo abaixo é apenas um dos recursos de SEO que devem ser praticados para melhorar seu ranking.</p>
<p><object width="640" height="480"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10080425&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=10080425&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="480"></embed></object>
<p><a href="http://vimeo.com/10080425">Google Insights para pesquisa</a> from <a href="http://vimeo.com/jaccon">jaccon</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaccon.com.br/2010/03/google-insight-for-search-utilizando-na-pratica-o-google-insights/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CRUD: Definição de organização de sistema CRUD</title>
		<link>http://jaccon.com.br/2010/03/crud-definicao-de-organizacao-de-sistema-crud/</link>
		<comments>http://jaccon.com.br/2010/03/crud-definicao-de-organizacao-de-sistema-crud/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 14:54:48 +0000</pubDate>
		<dc:creator>jaccon</dc:creator>
		
		<category><![CDATA[Todos]]></category>

		<guid isPermaLink="false">http://jaccon.com.br/?p=2354</guid>
		<description><![CDATA[CRUD é um acrônimo da expressão inglesa ( Create Retrieve Update and Delete ). Estes sistema fazem a função básica de criar, recuperar, atualizar e deletar dados de um banco de dados relacional.
Mas então qual a diferença entre um CRUD e um CMS ?
CRUD é a forma de organização dos dados de um sistema de [...]]]></description>
			<content:encoded><![CDATA[<p>CRUD é um acrônimo da expressão inglesa ( Create Retrieve Update and Delete ). Estes sistema fazem a função básica de criar, recuperar, atualizar e deletar dados de um banco de dados relacional.</p>
<p><strong>Mas então qual a diferença entre um CRUD e um CMS ?<br />
</strong>CRUD é a forma de organização dos dados de um sistema de gerenciamento de conteúdo. Um CMS pode ser apenas um simples CRUD.</p>
<p>Exemplo de matriz CRUD:<br />
<img class="alignnone" src="http://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/MatrizCrud1.jpg/800px-MatrizCrud1.jpg" alt="" width="800" height="388" /></p>
<p>Para saber mais acesse:<br />
- <a href="http://pt.wikipedia.org/wiki/CRUD#Interface_para_Usu.C3.A1rios" target="_blank">Definição de CRUD</a></p>
<p>- <a href="http://pt.wikipedia.org/wiki/Matriz_CRUD" target="_blank">Matrizes CRUD</a></p>
<p>A empresa <a href="http://www.bluesystems.com.br" target="_blank">Blue Systems</a> mantém o formato de organização de seu CMS o Blue Systems CMS em CRUD. Segundo a equipe de desenvolvimento é a forma mais simples, rápida e intuitiva para manter a melhor experiência de usuário e facilitar a vida dos desenvolvedores.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaccon.com.br/2010/03/crud-definicao-de-organizacao-de-sistema-crud/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Inspiração para programar: Wordpress 2.9</title>
		<link>http://jaccon.com.br/2010/03/inspiracao-para-programar-wordpress-29/</link>
		<comments>http://jaccon.com.br/2010/03/inspiracao-para-programar-wordpress-29/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 21:32:54 +0000</pubDate>
		<dc:creator>jaccon</dc:creator>
		
		<category><![CDATA[Todos]]></category>

		<guid isPermaLink="false">http://jaccon.com.br/?p=2352</guid>
		<description><![CDATA[Se têm algo que me inspira a desenvolver ferramentas cada vez melhor e cada vez mais fáceis de usar é ver o Wordpress 2.9
http://wordpress.org/development/2009/12/wordpress-2-9/

]]></description>
			<content:encoded><![CDATA[<p>Se têm algo que me inspira a desenvolver ferramentas cada vez melhor e cada vez mais fáceis de usar é ver o Wordpress 2.9</p>
<p>http://wordpress.org/development/2009/12/wordpress-2-9/</p>
<p><embed src="http://v.wordpress.com/wp-content/plugins/video/flvplayer.swf?ver=1.18" type="application/x-shockwave-flash" width="400" height="224" seamlesstabbing="true" allowfullscreen="true" allowscriptaccess="always" overstretch="true" flashvars="guid=NBZ853Xn&amp;width=400&amp;height=224&amp;locksize=no&amp;qc_publisherId=p-18-mFEk4J448M" title="Introducing WordPress 2.9 Carmen"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://jaccon.com.br/2010/03/inspiracao-para-programar-wordpress-29/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eliminando o CSRCS.EXE do iniciar do Windows &#038;*^%$#%</title>
		<link>http://jaccon.com.br/2010/03/eliminando-o-csrcsexe-do-iniciar-do-windows/</link>
		<comments>http://jaccon.com.br/2010/03/eliminando-o-csrcsexe-do-iniciar-do-windows/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 20:33:24 +0000</pubDate>
		<dc:creator>jaccon</dc:creator>
		
		<category><![CDATA[Todos]]></category>

		<category><![CDATA[remove CSRCS.EXE]]></category>

		<category><![CDATA[removendo CSRCS.EXE]]></category>

		<guid isPermaLink="false">http://jaccon.com.br/?p=2348</guid>
		<description><![CDATA[Mais um tutorial para aqueles que sofrem com os males do Windows (rs). Para aqueles que procuram uma solução para o CSRSC.EXE no iniciar do Windows segue abaixo a solução para eliminar da máquina.
OBS: Quer não ter este tipo de problema ? instale um Linux, BSD ou até mesmo um OSX86 em seu PC. é [...]]]></description>
			<content:encoded><![CDATA[<p>Mais um tutorial para aqueles que sofrem com os males do Windows (rs). Para aqueles que procuram uma solução para o CSRSC.EXE no iniciar do Windows segue abaixo a solução para eliminar da máquina.</p>
<p>OBS: Quer não ter este tipo de problema ? instale um Linux, BSD ou até mesmo um OSX86 em seu PC. é mais produtivo mais rápido ( se instalado e customizado ) e mais seguro.</p>
<p><strong>Removendo a tranqueira<br />
</strong>Com muita atenção, mãos a obra!</p>
<p>1 - Vá em Iniciar -&gt; Executar e digite &#8220;regedit&#8221; e clique em OK - Isso abrirá editor de registro do Windows.</p>
<p>2 - Clique em Editar -&gt; Localizar (Ctrl+F) e digite o nome do arquivo, no caso, &#8220;csrcs.exe&#8221; e clique em Localizar Próxima.</p>
<p>Importante<br />
<strong>* O arquivo &#8220;csrcs.exe&#8221; é vírus com certeza, o que não é vírus é o &#8220;csrss.exe&#8221; (encontrado no Gerenciador de Tarefas do</strong></p>
<p>Windows).<br />
- Você pode e deve remover todas as entradas do arquivo &#8220;csrcs.exe&#8221; exceto uma, a &#8220;Shell&#8221;.</p>
<p>3 - Ao localizará a chave do registro de nome &#8220;Shell&#8221; com o seguinte texto escrito: &#8220;Explorer.exe csrcs.exe&#8221;, clique com o</p>
<p>botão direito em &#8220;Shell&#8221;, clique em &#8220;modificar&#8221; e apague APENAS o &#8220;csrcs.exe&#8221; na caixa Dados do valor, deixando Explorer.exe.</p>
<p>Se por acaso forem encontradas outras referências similares em outras chaves, faça o mesmo que  fez na chave &#8220;Shell&#8221;. Depois</p>
<p>disso, saia do &#8220;regedit&#8221; e reinicie o computador.</p>
<p>reinicie o pc e veja se resolveu o problema!!</p>
<p>][s<br />
ps: se vc não tem intimidade em mexer nas chaves de registro, muito cuidado, pois uma chave apagada incorretamente pode prejudicar toda estabilidade do sistema, por isso, so execute os procedimentos acima se souber o q esta fazendo.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaccon.com.br/2010/03/eliminando-o-csrcsexe-do-iniciar-do-windows/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SEO: Utilizando de forma correta as Metatags</title>
		<link>http://jaccon.com.br/2010/03/seo-utilizando-de-forma-correta-as-metatags/</link>
		<comments>http://jaccon.com.br/2010/03/seo-utilizando-de-forma-correta-as-metatags/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 05:01:13 +0000</pubDate>
		<dc:creator>jaccon</dc:creator>
		
		<category><![CDATA[Todos]]></category>

		<guid isPermaLink="false">http://jaccon.com.br/?p=2340</guid>
		<description><![CDATA[* Começamos dizendo que apenas a utilização de metatags não faz milagre. Não conte que apenas com isto seu site será o primeiro da busca orgânica do Google que vocês estará completamente enganado.
A utilização das metas fazendo parte de um pacote de técnicas que devem ser utilizadas para rankear o conteúdo de um site no [...]]]></description>
			<content:encoded><![CDATA[<p>* Começamos dizendo que apenas a utilização de metatags não faz milagre. Não conte que apenas com isto seu site será o primeiro da busca orgânica do Google que vocês estará completamente enganado.</p>
<p>A utilização das metas fazendo parte de um pacote de técnicas que devem ser utilizadas para rankear o conteúdo de um site no Google. O Wordpress, Drupal, Joomla e Blue Systems CMS 2.1 faz este trabalho muito bem sem a interação do usuário, porém se você utiliza qualquer outro CMS é bom seguir o exemplo das tags abaixo:</p>
<p>Você poderá gerar as metas automáticamente pelo site: <a href="http://www.metataggenerator.org/" target="_blank">http://www.metataggenerator.org/</a></p>
<p><textarea cols="150" rows="12">&lt;br /&gt; &lt;meta name=&#8221;description&#8221; content=&#8221;Gameworld 2010. O maior evento de games do Brasil agora em sua 6 ediÃ§Ã£o&#8221;&gt;&lt;br /&gt; &lt;meta name=&#8221;keywords&#8221; content=&#8221;Gameworld 2010. O maior evento de games do Brasil agora em sua 6 ediÃ§Ã£o. Gameworld, TrofÃ©u Gameworld&#8221;&gt;&lt;br /&gt; &lt;meta name=&#8221;Charset&#8221; content=&#8221;ISO-8859-1&#8243;&gt;&lt;br /&gt; &lt;meta name=&#8221;copyright&#8221; content=&#8221;Copyright © 2010 YourCompany&#8221;&gt;&lt;br /&gt; &lt;meta name=&#8221;author&#8221; content=&#8221;Your Name&#8221;&gt;&lt;br /&gt; &lt;meta name=&#8221;designer&#8221; content=&#8221;Designer&#8217;s Name&#8221;&gt;&lt;br /&gt; &lt;meta name=&#8221;robots&#8221; content=&#8221;index, follow&#8221;&gt;&lt;br /&gt; &lt;meta name=&#8221;googlebot&#8221; content=&#8221;index, follow&#8221;&gt;&lt;/p&gt; &lt;link rel=&#8221;icon&#8221; type=&#8221;image/x-icon&#8221; href=&#8221;/favicon.ico&#8221; mce_href=&#8221;/favicon.ico&#8221;&gt; &lt;link rel=&#8221;shortcut icon&#8221; type=&#8221;image/x-icon&#8221; href=&#8221;/favicon.ico&#8221; mce_href=&#8221;/favicon.ico&#8221;&gt; </textarea></p>
]]></content:encoded>
			<wfw:commentRss>http://jaccon.com.br/2010/03/seo-utilizando-de-forma-correta-as-metatags/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WEB: Deixando seu site muito mais rápido</title>
		<link>http://jaccon.com.br/2010/03/web-deixando-seu-site-muito-mais-rapido/</link>
		<comments>http://jaccon.com.br/2010/03/web-deixando-seu-site-muito-mais-rapido/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 04:55:52 +0000</pubDate>
		<dc:creator>jaccon</dc:creator>
		
		<category><![CDATA[Todos]]></category>

		<guid isPermaLink="false">http://jaccon.com.br/?p=2338</guid>
		<description><![CDATA[Um dos motivos de criar este post é mostrar para os usuários como verificar se o site dele precisa ser optimizado para uma melhor experiência do usuário ao carregar o seu site.
Neste documento ( em inglês ) do Google explica como deixar seu site mais rápido utilizando técnicas como métricas do Google Page Speed, Yslow [...]]]></description>
			<content:encoded><![CDATA[<p>Um dos motivos de criar este post é mostrar para os usuários como verificar se o site dele precisa ser optimizado para uma melhor experiência do usuário ao carregar o seu site.</p>
<p>Neste documento ( em inglês ) do Google explica como deixar seu site mais rápido utilizando técnicas como métricas do Google Page Speed, Yslow e utilização de renderização de scripts Javascript paralelamente.</p>
<p><span id="more-2338"></span></p>
<h1 class="page_title">Optimize caching</h1>
<p>Most web pages include resources that change infrequently, such as CSS files, image files, JavaScript files, and so on. These resources take time to download over the network, which increases the time it takes to load a web page. HTTP caching allows these resources to be saved, or cached, by a browser or proxy. Once a resource is cached, a browser or proxy can refer to the locally cached copy instead of having to download it again on subsequent visits to the web page. Thus caching is a double win: you reduce <a href="http://code.google.com/speed/page-speed/docs/rtt.html">round-trip time</a> by eliminating numerous HTTP requests for the required resources, and you substantially reduce the total payload size of the responses. Besides leading to a dramatic reduction in page load time for subsequent user visits, enabling caching can also significantly reduce the bandwidth and hosting costs for your site.</p>
<ol class="toc">
<li><a href="http://code.google.com/speed/page-speed/docs/caching.html#LeverageBrowserCaching">Leverage browser caching</a></li>
<li><a href="http://code.google.com/speed/page-speed/docs/caching.html#LeverageProxyCaching">Leverage proxy caching</a></li>
</ol>
<h2 id="LeverageBrowserCaching">Leverage browser caching</h2>
<h3>Overview</h3>
<p>Setting an expiry date or a maximum age in the HTTP headers for static resources instructs the browser to load previously downloaded resources from local disk rather than over the network.</p>
<h3>Details</h3>
<p>HTTP/S supports local caching of static resources by the browser. Some of the newest browsers (e.g. IE 7, Chrome) use a heuristic to decide how long to cache all resources that don&#8217;t have explicit caching headers. Other older browsers may require that caching headers be set before they will fetch a resource from the cache; and some may never cache any resources sent over SSL.</p>
<p>To take advantage of the full benefits of caching consistently across all browsers, we recommend that you configure your web server to explicitly set caching headers and apply them to <em>all</em> cacheable static resources, not just a small subset (such as images). Cacheable resources include JS and CSS files, image files, and other binary object files (media files, PDFs, Flash files, etc.). In general, HTML is not static, and shouldn&#8217;t be considered cacheable.</p>
<p>HTTP/1.1 provides the following caching response headers :</p>
<ul>
<li><code>Expires</code> and <code>Cache-Control: max-age</code>. These specify the “freshness lifetime” of a resource, that is, the time period during which the browser can use the cached resource without checking to see if a new version is available from the web server. They are &#8220;strong caching headers&#8221; that apply unconditionally; that is, once they&#8217;re set and the resource is downloaded, the browser will not issue any GET requests for the resource until the expiry date or maximum age is reached.</li>
<li><code>Last-Modified</code> and <code>ETag</code>. These specify some characteristic about the resource that the browser checks to determine if the files are the same. In the <code>Last-Modified</code> header, this is always a date. In the <code>ETag</code> header, this can be any value that uniquely identifies a resource (file versions or content hashes are typical). <code>Last-Modified</code> is a &#8220;weak&#8221; caching header in that the browser applies a heuristic to determine whether to fetch the item from cache or not. (The heuristics are different among different browsers.) However, these headers allow the browser to efficiently update its cached resources by issuing conditional GET requests when the user explicitly reloads the page. Conditional GETs don&#8217;t return the full response unless the resource has changed at the server, and thus have lower latency than full GETs.</li>
</ul>
<p>It is important to specify one of <code>Expires</code> or <code>Cache-Control max-age</code>, <em>and</em> one of <code>Last-Modified</code> or <code>ETag</code>, for all cacheable resources. It is redundant to specify both <code>Expires</code> and <code>Cache-Control: max-age</code>, or to specify both <code>Last-Modified</code> and <code>ETag</code>.</p>
<h3>Recommendations</h3>
<dl>
<dt>Set caching headers aggressively for all static resources. </dt>
<dd>For all cacheable resources, we recommend the following settings:</p>
<ul>
<li>Set <code>Expires</code> to a minimum of one month, and preferably up to one year, in the future. (We prefer <code>Expires</code> over <code>Cache-Control: max-age </code>because it is is more widely supported.) Do not set it to more than one year in the future, as that violates the RFC guidelines.If you know exactly when a resource is going to change, setting a shorter expiration is okay. But if you think it &#8220;might change soon&#8221; but don&#8217;t know when, you should set a long expiration and use URL fingerprinting (described below). Setting caching aggressively does not &#8220;pollute&#8221; browser caches: as far as we know, all browsers clear their caches according to a Least Recently Used algorithm; we are not aware of any browsers that wait until resources expire before purging them.</li>
<li>Set the <code>Last-Modified</code> date to the last time the resource was changed. If the<code> Last-Modified</code> date is sufficiently far enough in the past, chances are the browser won&#8217;t refetch it.</li>
</ul>
</dd>
<dt>Use fingerprinting to dynamically enable caching.</dt>
<dd>For resources that change occasionally, you can have the browser cache the resource until it changes on the server, at which point the server tells the browser that a new version is available. You accomplish this by embedding a fingerprint of the resource in its URL (i.e. the file path). When the resource changes, so does its fingerprint, and in turn, so does its URL. As soon as the URL changes, the browser is forced to re-fetch the resource. Fingerprinting allows you to set expiry dates long into the future even for resources that change more frequently than that. Of course, this technique requires that all of the pages that reference the resource know about the fingerprinted URL, which may or may not be feasible, depending on how your pages are coded.</dd>
<dt>Set the Vary header correctly for Internet Explorer.</dt>
<dd>Internet Explorer does not cache any resources that are served with the <code>Vary</code> header and any fields but <code>Accept-Encoding</code> and <code>User-Agent</code>. To ensure these resources are cached by IE, make sure to strip out any other fields from the Vary header, or remove the Vary header altogether if possible</dd>
<dt>Avoid URLs that cause cache collisions in Firefox.</dt>
<dd>The Firefox disk cache hash functions can generate collisions for URLs that differ only slightly, namely only on 8-character boundaries. When resources hash to the same key, only one of the resources is persisted to disk cache; the remaining resources with the same key have to be re-fetched across browser restarts. Thus, if you are using fingerprinting or are otherwise programmatically generating file URLs, to maximize cache hit rate, avoid the Firefox hash collision issue by ensuring that your application generates URLs that differ on more than 8-character boundaries. </dd>
<dt>Use the <code>Cache control: public</code> directive to enable HTTPS caching for Firefox.</dt>
<dd>Some versions of Firefox require that the <code>Cache control: public</code> header to be set in order for resources sent over SSL to be cached on disk, even if the other caching headers are explicitly set. Although this header is normally used to enable caching by proxy servers (as described below), proxies cannot cache any content sent over HTTPS, so it is always safe to set this header for HTTPS resources. </dd>
</dl>
<h3>Example</h3>
<p>For the stylesheet used to display the user&#8217;s calendar after login, Google Calendar embeds a fingerprint in its filename: calendar/static/<em>fingerprint_key</em>doozercompiled.css, where the fingerprint key is a 128-bit hexadecimal number. At the time of the screen shot below (taken from Page Speed&#8217;s <strong>Show Resources</strong> panel), the fingerprint was set to 82b6bc440914c01297b99b4bca641a5d:</p>
<p><img src="http://code.google.com/speed/page-speed/images/cachingheader1.png" border="0" alt="" width="816" height="440" /></p>
<p>The fingerprinting mechanism allows the server to set the <code>Expires</code> header to exactly one year ahead of the request date; the <code>Last-Modified</code> header to the date the file was last modified; and the <code>Cache-Control: max-age</code> header to 3153600. To cause the client to re-download the file in case it changes before its expiry date or maximum age, the fingerprint (and therefore the URL) changes whenever the file&#8217;s content does.</p>
<h3>Additional resources</h3>
<ul>
<li>For an in-depth explanation of HTTP caching, see the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html">HTTP/1.1 RFC</a>, sections <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.2">13.2</a>, <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec14.21">14.21</a>, and <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec14.9.3">14.9.3</a>.</li>
<li>For details on enabling caching in Apache, consult the <a href="http://apache.org/docs/2.2/caching.html">Apache Caching Guide</a>.</li>
</ul>
<p class="backtotop"><a href="http://code.google.com/speed/page-speed/docs/caching.html#top">Back to top</a></p>
<h2 id="LeverageProxyCaching">Leverage proxy caching</h2>
<h3>Overview</h3>
<p>Enabling public caching in the HTTP headers for static resources allows the browser to download resources from a nearby proxy server rather than from a remoter origin server.</p>
<h3>Details</h3>
<p>In addition to browser caching, HTTP provides for proxy caching, which enables static resources to be cached on public web proxy servers, most notably those used by ISPs. This means that even first-time users to your site can benefit from caching: once a static resource has been requested by one user through the proxy, that resource is available for all other users whose requests go through that same proxy. Since those locations are likely to be in closer network proximity to your users than your servers, proxy caching can result in a significant reduction in network latency. Also, if enabled proxy caching effectively gives you free web site hosting, since responses served from proxy caches don&#8217;t draw on your servers&#8217; bandwidth at all.</p>
<p>You use the <code>Cache-control: public</code> header to indicate that a resource can be cached by public web proxies in addition to the browser that issued the request. With some exceptions (described below), you should configure your web server to set this header to <code>public</code> for cacheable resources.</p>
<h3>Recommendations</h3>
<dl>
<dt>Don&#8217;t include a query string in the URL for static resources. </dt>
<dd>Most proxies, most notably Squid up through version 3.0, do not cache resources with a &#8220;?&#8221; in their URL even if a <code>Cache-control: public</code> header is present in the response. To enable proxy caching for these resources, remove query strings from references to static resources, and instead encode the parameters into the file names themselves. </dd>
<dt>Don&#8217;t enable proxy caching for resources that set cookies. </dt>
<dd>Setting the header to public effectively shares resources among multiple users, which means that any cookies set for those resources are shared as well. While many proxies won&#8217;t actually cache any resources with cookie headers set, it&#8217;s better to avoid the risk altogether. Either set the <code>Cache-Control </code>header to <code>private</code> or serve these resources <a href="http://code.google.com/speed/page-speed/docs/request.html#ServeFromCookielessDomain">from a cookieless domain</a>. </dd>
<dt>Be aware of issues with proxy caching of JS and CSS files. </dt>
<dd>Some public proxies have bugs that do not detect the presence of the <code>Content-Encoding</code> response header. This can result in compressed versions being delivered to client browsers that cannot properly decompress the files. Since these files should always be <a href="http://code.google.com/speed/page-speed/docs/payload.html#GzipCompression">gzipped</a> by your server, to ensure that the client can correctly read the files, do either of the following:</p>
<ul>
<li>Set the the <code>Cache-Control </code>header to <code>private</code>. This disables proxy caching altogether for these resources. If your application is multi-homed around the globe and relies less on proxy caches for user locality, this might be an appropriate setting.</li>
<li>Set the <code>Vary: Accept-Encoding</code> response header. This instructs the proxies to cache two versions of the resource: one compressed, and one uncompressed. The correct version of the resource is delivered based on the client request header. This is a good choice for applications that are singly homed and depend on public proxies for user locality.</li>
</ul>
</dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://jaccon.com.br/2010/03/web-deixando-seu-site-muito-mais-rapido/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
