<?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>The Blog of a WebDeveloper &#187; Optimização</title>
	<atom:link href="http://joaopedropereira.com/blog/category/webdevelopment/optimizacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://joaopedropereira.com/blog</link>
	<description>Um novo estilo de desenvolvimento</description>
	<lastBuildDate>Tue, 27 Jul 2010 23:06:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Não desaproveite o seu Footer!</title>
		<link>http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/</link>
		<comments>http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 22:08:57 +0000</pubDate>
		<dc:creator>João Pedro Pereira</dc:creator>
				<category><![CDATA[Optimização]]></category>
		<category><![CDATA[Usabilidade]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[footer]]></category>
		<category><![CDATA[sitemap]]></category>
		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://joaopedropereira.com/blog/?p=800</guid>
		<description><![CDATA[Ser WebDeveloper não é uma tarefa fácil, não só temos de estar sempre actualizados relativamente ao que o mercado de trabalho exige relativamente a conhecimentos em ferramentas, frameworks e linguagens de programação como também temos de estar em cima dos hot topics na área do WebDesign e Usabilidade. Construir um site do zero não é [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2010%2F06%2F03%2Fnao-desaproveite-o-seu-footer%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2010%2F06%2F03%2Fnao-desaproveite-o-seu-footer%2F&amp;source=joaoppereira&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Ser WebDeveloper não é uma tarefa fácil, não só temos de estar sempre actualizados relativamente ao que o mercado de trabalho exige relativamente a conhecimentos em ferramentas, frameworks e linguagens de programação como também temos de estar em cima dos hot topics na área do WebDesign e Usabilidade.</p>
<p>Construir um site do zero não é uma tarefa simples, pois exige muito planeamento, estruturação e pensamento criativo e ser criativo é muitas vezes uma dor de cabeça pois quando mais precisamos da nossa amiga criatividade ela pode não aparecer&#8230; E é preciso saber estimulá-la.</p>
<p>Tenho visto na Web Portuguesa bons sites a desaproveitar algumas áreas do site, e neste artigo vou referir-me ao footer.</p>
<p>Além do típico Acordo de Privacidade e Informações Legais (que é sempre uma boa forma de aproveitar o espaço) existem algum conteúdo especifico que pode e deve ser usado no footer.</p>
<p><img class="aligncenter size-medium wp-image-801" title="Sitemap" src="http://joaopedropereira.com/blog/wp-content/uploads/2010/06/inside_sitemap-222x300.jpg" alt="Sitemap" width="222" height="300" /><strong> Sitemap</strong> &#8211; É uma excelente forma de utilizar o espaço do footer pois é útil para os visitantes que se encontrem perdidos ou que simplesmente tenham pressa para encontrar o que procuram sem terem de fazer um scanning por todo o conteúdo do site, que pode ser moroso e por consequência pode fazer-nos perder utilizadores e possíveis clientes. Ninguém gosta de não encontrar rapidamente o que procura e cabe-nos a nós dar-lhes o que desejam.</p>
<p><img class="aligncenter size-medium wp-image-802" title="Contactos" src="http://joaopedropereira.com/blog/wp-content/uploads/2010/06/ContactUs-300x200.jpg" alt="Contactos" width="300" height="200" /></p>
<p><strong>Informação de Contacto </strong>- É também muito importante ter informações de como pode ser feito o contacto com o dono do site ou então criar um formulário de contacto para facilitar o contacto.</p>
<p><span style="text-decoration: underline;">Ferramentas e Inspiração:</span><br />
<a title="15 Great Online Form Building Tools" href="http://www.tripwiremagazine.com/2010/05/15-great-online-form-building-tools.html" target="_blank">15 Great Online Form Building Tools</a><br />
<a title="Beautiful Contact Forms For Your Inspiration" href="http://www.webdesignerdepot.com/2010/05/beautiful-contact-forms-for-your-inspiration/" target="_blank">Beautiful Contact Forms For Your Inspiration</a></p>
<p><strong> Sobre</strong> &#8211; A par da informação de contacto, uma rápida descrição do que é aquela página, quem é a empresa, quem é a pessoa, etc. algo que faça os utilizadores conhecer melhor.</p>
<p><img class="aligncenter size-medium wp-image-809" title="Web2.0 Logos" src="http://joaopedropereira.com/blog/wp-content/uploads/2010/06/web2_logos1-300x251.jpg" alt="" width="300" height="251" /></p>
<p><strong> Social Media</strong> &#8211;  É sem dúvida uma excelente forma de ganhar mais tráfego e/ou de manter os utilizadores actualizados quanto a informações relativos ao produto/conteúdo que o site tem ou vende.</p>
<p>Esta é uma lista de sugestões do que pode ser colocado no footer dos seus sites e dos sites que desenvolve, contudo a lista não termina por aqui existem muito mais coisas que podem ser colocados no footer, feed do Flickr com imagens interessantes, publicidade, formulários para subscrever a newsletters, feeds do twitter e/ou facebook, etc. etc. etc. Apenas a imaginação e originalidade de cada um é o limite.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;n=N%C3%A3o+desaproveite+o+seu+Footer%21&amp;pli=1" rel="nofollow" class="external" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;title=N%C3%A3o+desaproveite+o+seu+Footer%21" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;title=N%C3%A3o+desaproveite+o+seu+Footer%21" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;t=N%C3%A3o+desaproveite+o+seu+Footer%21" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=N%C3%A3o+desaproveite+o+seu+Footer%21&amp;link=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/" rel="nofollow" class="external" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;title=N%C3%A3o+desaproveite+o+seu+Footer%21&amp;srcUrl=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;srcTitle=N%C3%A3o+desaproveite+o+seu+Footer%21&amp;snippet=Ser%20WebDeveloper%20n%C3%A3o%20%C3%A9%20uma%20tarefa%20f%C3%A1cil%2C%20n%C3%A3o%20s%C3%B3%20temos%20de%20estar%20sempre%20actualizados%20relativamente%20ao%20que%20o%20mercado%20de%20trabalho%20exige%20relativamente%20a%20conhecimentos%20em%20ferramentas%2C%20frameworks%20e%20linguagens%20de%20programa%C3%A7%C3%A3o%20como%20tamb%C3%A9m%20temos%20de%20estar%20em%20cima%20dos%20hot%20topics%20na%20%C3%A1rea%20do%20WebDesign%20e%20U" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;title=N%C3%A3o+desaproveite+o+seu+Footer%21&amp;summary=Ser%20WebDeveloper%20n%C3%A3o%20%C3%A9%20uma%20tarefa%20f%C3%A1cil%2C%20n%C3%A3o%20s%C3%B3%20temos%20de%20estar%20sempre%20actualizados%20relativamente%20ao%20que%20o%20mercado%20de%20trabalho%20exige%20relativamente%20a%20conhecimentos%20em%20ferramentas%2C%20frameworks%20e%20linguagens%20de%20programa%C3%A7%C3%A3o%20como%20tamb%C3%A9m%20temos%20de%20estar%20em%20cima%20dos%20hot%20topics%20na%20%C3%A1rea%20do%20WebDesign%20e%20U&amp;source=The Blog of a WebDeveloper" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22N%C3%A3o%20desaproveite%20o%20seu%20Footer%21%22&amp;body=Link: http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A Ser%20WebDeveloper%20n%C3%A3o%20%C3%A9%20uma%20tarefa%20f%C3%A1cil%2C%20n%C3%A3o%20s%C3%B3%20temos%20de%20estar%20sempre%20actualizados%20relativamente%20ao%20que%20o%20mercado%20de%20trabalho%20exige%20relativamente%20a%20conhecimentos%20em%20ferramentas%2C%20frameworks%20e%20linguagens%20de%20programa%C3%A7%C3%A3o%20como%20tamb%C3%A9m%20temos%20de%20estar%20em%20cima%20dos%20hot%20topics%20na%20%C3%A1rea%20do%20WebDesign%20e%20U" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;title=N%C3%A3o+desaproveite+o+seu+Footer%21" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=N%C3%A3o+desaproveite+o+seu+Footer%21&amp;url=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-newsvine">
			<a href="http://www.newsvine.com/_tools/seed&amp;save?u=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;h=N%C3%A3o+desaproveite+o+seu+Footer%21" rel="nofollow" class="external" title="Seed this on Newsvine">Seed this on Newsvine</a>
		</li>
		<li class="shr-orkut">
			<a href="http://promote.orkut.com/preview?nt=orkut.com&amp;tt=N%C3%A3o+desaproveite+o+seu+Footer%21&amp;du=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;cn=Ser%20WebDeveloper%20n%C3%A3o%20%C3%A9%20uma%20tarefa%20f%C3%A1cil%2C%20n%C3%A3o%20s%C3%B3%20temos%20de%20estar%20sempre%20actualizados%20relativamente%20ao%20que%20o%20mercado%20de%20trabalho%20exige%20relativamente%20a%20conhecimentos%20em%20ferramentas%2C%20frameworks%20e%20linguagens%20de%20programa%C3%A7%C3%A3o%20como%20tamb%C3%A9m%20temos%20de%20estar%20em%20cima%20dos%20hot%20topics%20na%20%C3%A1rea%20do%20WebDesign%20e%20U" rel="nofollow" class="external" title="Promote this on Orkut">Promote this on Orkut</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;title=N%C3%A3o+desaproveite+o+seu+Footer%21" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;title=N%C3%A3o+desaproveite+o+seu+Footer%21" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-sphinn">
			<a href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/" rel="nofollow" class="external" title="Sphinn this on Sphinn">Sphinn this on Sphinn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;title=N%C3%A3o+desaproveite+o+seu+Footer%21" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-techmeme">
			<a href="http://twitter.com/home/?status=Tip+@Techmeme+http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/+&quot;N%C3%A3o+desaproveite+o+seu+Footer%21&quot;&amp;source=shareaholic" rel="nofollow" class="external" title="Tip this to TechMeme">Tip this to TechMeme</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2010%2F06%2F03%2Fnao-desaproveite-o-seu-footer%2F&amp;t=N%C3%A3o+desaproveite+o+seu+Footer%21" rel="nofollow" class="external" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=N%C3%A3o+desaproveite+o+seu+Footer%21+-+http://bit.ly/9wuXec&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-yahoobuzz">
			<a href="http://buzz.yahoo.com/submit/?submitUrl=http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/&amp;submitHeadline=N%C3%A3o+desaproveite+o+seu+Footer%21&amp;submitSummary=Ser%20WebDeveloper%20n%C3%A3o%20%C3%A9%20uma%20tarefa%20f%C3%A1cil%2C%20n%C3%A3o%20s%C3%B3%20temos%20de%20estar%20sempre%20actualizados%20relativamente%20ao%20que%20o%20mercado%20de%20trabalho%20exige%20relativamente%20a%20conhecimentos%20em%20ferramentas%2C%20frameworks%20e%20linguagens%20de%20programa%C3%A7%C3%A3o%20como%20tamb%C3%A9m%20temos%20de%20estar%20em%20cima%20dos%20hot%20topics%20na%20%C3%A1rea%20do%20WebDesign%20e%20U&amp;submitCategory=science&amp;submitAssetType=text" rel="nofollow" class="external" title="Buzz up!">Buzz up!</a>
		</li>
		<li class="shr-yahoomail">
			<a href="http://compose.mail.yahoo.com/?Subject=N%C3%A3o+desaproveite+o+seu+Footer%21&amp;body=Link: http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A Ser%20WebDeveloper%20n%C3%A3o%20%C3%A9%20uma%20tarefa%20f%C3%A1cil%2C%20n%C3%A3o%20s%C3%B3%20temos%20de%20estar%20sempre%20actualizados%20relativamente%20ao%20que%20o%20mercado%20de%20trabalho%20exige%20relativamente%20a%20conhecimentos%20em%20ferramentas%2C%20frameworks%20e%20linguagens%20de%20programa%C3%A7%C3%A3o%20como%20tamb%C3%A9m%20temos%20de%20estar%20em%20cima%20dos%20hot%20topics%20na%20%C3%A1rea%20do%20WebDesign%20e%20U" rel="nofollow" class="external" title="Email this via Yahoo! Mail">Email this via Yahoo! Mail</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://joaopedropereira.com/blog/2010/06/03/nao-desaproveite-o-seu-footer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>O WebDeveloper que Utiliza PHP :: Caminho</title>
		<link>http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/</link>
		<comments>http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 15:38:50 +0000</pubDate>
		<dc:creator>João Pedro Pereira</dc:creator>
				<category><![CDATA[Optimização]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[code igniter]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[kohana]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[SQL Injection]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://joaopedropereira.com/blog/?p=456</guid>
		<description><![CDATA[PHP é a linguagem de programação web server-side mais utilizada a nível Mundial e neste artigo vão ser retratados os aspectos que devem fazer parte do estudo, do caminho de um WebDeveloper que quer desenvolver em PHP. Entre eles Boas práticas, Frameworks, Segurança, Caching, Buffering e Environments. O Melhor Amigo &#8211; PHP Manual Antes de [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F08%2F15%2Fphp-developer-caminho%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F08%2F15%2Fphp-developer-caminho%2F&amp;source=joaoppereira&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://pt.php.net/" target="_blank"><img class="alignright" title="PHP" src="http://pt.php.net/images/php.gif" alt="" width="120" height="67" /></a>PHP é a linguagem de programação web server-side mais utilizada a nível Mundial e neste artigo vão ser retratados os aspectos que devem fazer parte do estudo, do caminho de um WebDeveloper que quer desenvolver em PHP. Entre eles Boas práticas, Frameworks, Segurança, Caching, Buffering e Environments.</p>
<h2>O Melhor Amigo &#8211; PHP Manual</h2>
<p>Antes de mais é necessário aprender a linguagem em si, e o PHP é uma linguagem com uma enorme comunidade por trás que desenvolveu o PHP Manual, neste manual encontra-se todo o conhecimento necessário para se dominar a linguagem PHP. E como se não chegasse a sua enorme qualidade este é, também, gratuito e pode ser acedido quer online quer offline.</p>
<p>De leitura fácil encontramos no PHP Manual a documentação de como proceder à sua instalação e configuração, a documentação da estrutura lógica da linguagem bem como de todas as funções que a compõe sem nunca faltarem imensos exemplos! A secção das notas dos utilizadores é riquissima em estudos e desenvolvimentos de cada função, não dispensem a sua leitura!</p>
<p><a title="PHP Manual" href="http://www.php.net/manual/pt_BR/index.php" target="_blank">Aceder ao PHP Manual em Português</a></p>
<h2>Montar um Ambiente de Teste</h2>
<p>Para testar o PHP não é necessário apenas ter um editor de texto e um browser, é necessário um servidor que corra o interpretador de PHP.</p>
<p>Então para começarmos a desenvolver em PHP é necessário configurar um pequeno servidor ou então utilizar um host existente&#8230;</p>
<p>Existem soluções que não envolvem muito trabalho nas configurações, como o <a title="MAMP" href="http://www.mamp.info/en/index.html" target="_blank">MAMP</a> (Mac), <a title="WAMP" href="http://www.wampserver.com/en/" target="_blank">WAMP</a> (Windows), <a title="LAMP" href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)" target="_blank">LAMP</a> (Linux), estas ferramentas já trazem também incluido a SGBD (Sistema de Gestão de Base de Dados) <a title="MySQL :: The world's most popular open source database" href="http://www.mysql.com/" target="_blank">MySQL</a>.</p>
<p>Depois para desenvolver o código pode utilizar ferramentas de auxilio, os IDE&#8217;s. A SmashingMagazine realizou um estudo comparativo sobre IDE&#8217;s para PHP. <a title="The Big PHP IDE Test" href="http://www.smashingmagazine.com/2009/02/11/the-big-php-ides-test-why-use-oneand-which-to-choose/" target="_blank">Ver Estudo Comparativo de IDE&#8217;s para PHP Aqui</a></p>
<p>Para quem não quer editores tão pesados aconselho o <a title="Geany" href="http://www.geany.org/" target="_blank">Geany</a> (Linux) ou <a title="Notepad++" href="http://notepad-plus.sourceforge.net/br/site.htm" target="_blank">Notepad++</a> (Windows).</p>
<h2>Desenvolver Bom Código</h2>
<p>Isto não é algo restrito ao PHP mas a todas as linguagens de programação.</p>
<p>Quando programamos algo deve ter, além de uma estrutura lógica e funcional correcta, uma boa identação, documentação e deve também ser auto-explicativa (variáveis, classes e funções com nomes que descrevam facilmente o que contêm / o que fazem).</p>
<p>Deve ser fácil de ler e entender quer pelo próprio programador daqui a uns anos ou por outro programador que tenha de modificar algo no código desenvolvido.</p>
<h3>Manter Funções Fora de Ciclos</h3>
<p>Manter sempre a declaração de funções fora de ciclos é um aspecto muito importante quando visamos a performance de uma aplicação desenvolvida em PHP pois num ciclo que se repete (imaginemos) 500 vezes, a função será declarada 500 vezes, uma perda de tempo.</p>
<h3>Organização do Código por Ficheiros</h3>
<p>Além da organização ao nível das linhas código em si temos a organização de código relativa à separação por ficheiros e categorias. Para facilitar o entendimento e a detecção e correcção de erros o código deve ser separado lógicamente.</p>
<p>Imaginemos que estamos a desenvolver um CMS (Content Management System). E então devido à grande quantidade de código que tem de ser desenvolvido vamos separar o código em vários ficheiros.</p>
<p>Má Prática</p>
<p><img class="aligncenter size-full wp-image-462" title="Má Prática - Organização Ficheiros" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/08/CapturaEcra.png" alt="Má Prática - Organização Ficheiros" width="633" height="97" /></p>
<p>Boa Prática</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-463" title="Boa Prática - Organização Código" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/08/CapturaEcra-1.png" alt="Boa Prática Organização Código" width="766" height="87" /></p>
<h2>Aprender Object Oriented Programming</h2>
<p>Object-oriented programming (OOP) ou Programação Orientada a Objectos (POO) em Português utiliza objectos para representar partes da aplicação permitindo separar em secções lógicas o código, facilitando a sua modificação e organização.</p>
<h2>Aprender a Utilizar uma Framework</h2>
<p>Muitos defendem que se deve aprender a utilizar frameworks na iniciação ao PHP porque com elas se aprende a desenvolver código mais avançado, a organizar melhor o código, a torná-lo lógico, a fazer debbug de erros, etc.</p>
<p>Outros defendem que não se deve aprender a utilizar frameworks na iniciação ao PHP porque no inicio o que os utilizadores necessitam é fazer os seus erros, aprender a desenvolver o seu código de raíz, sem funções e classes prontas a utilizar (exceptuando aquelas que vêm de raíz no PHP claro).</p>
<p>Eu considero que o utilizador deve dar uma olhadela a algumas frameworks e decidir se as deve ou não utilizar, porque cada pessoa é unica e pode aprender de diversas formas. Frameworks que considero muito bem estruturadas: <a title="Kohana: Swift, Secure, and Small PHP 5 Framework" href="http://www.kohanaphp.com/" target="_blank">Kohana</a>, <a title="CodeIgniter - Open source PHP web application framework" href="http://codeigniter.com/" target="_blank">CodeIgniter</a> e <a title="CakePHP: the rapid development php framework" href="http://cakephp.org/" target="_blank">CakePHP</a> .</p>
<h2>Nunca Confie nos Utilizadores</h2>
<p>Um dos aspectos mais importantes ao nível da segurança de aplicações informáticas é nunca confiar nos utilizadores da aplicação que estamos a desenvolver.</p>
<p>E que implica isso? Validar tudo o que entra! URL&#8217;s, formulários, cookies, sessões e até headers dos browsers.</p>
<p>Vamos então ver alguns exemplos de validações pois seria impossível cobrir todas as validações possíveis.</p>
<h2>Validar Dados</h2>
<p>É muito importante validar e corrigir todos os dados que possam ser introduzidos pelo utilizador! Infelizmente tenho visto imensas aplicações web sem qualquer protecção contra ataques tornando-as completamente vulneráveis a ataques.</p>
<p>Imaginemos o seguinte URL: joaopedropereira.com/xpto.php?id=1245</p>
<p>Que falha pode ser explorada aqui? O parâmetro dado ao id que pode ser utilizado para um SQL Injection por exemplo. Como fazer esta validação? Através de Regex:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> is_natural<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span>bool<span style="color: #009900;">&#41;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'/^[0-9]+$/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>is_natural<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">/* código */</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span> <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Erro'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Outro exemplo também com URL: joaopedropereira.com/xpto.php?email=email@domain.tld</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> is_email<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900; font-weight: bold;">TRUE</span> <span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>is_email<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">/* código */</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span> <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Erro'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Também com formulários se deve proceder de uma forma semelhante a esta.</p>
<p>ID Cliente<br />
<input name="id" type="text" />
<p>Email<br />
<input name="email" type="text" /></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> is_natural<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span>bool<span style="color: #009900;">&#41;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'/^[0-9]+$/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> is_email<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900; font-weight: bold;">TRUE</span> <span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>is_email<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> AND is_natural<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">/* código */</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span> <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Erro'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Vimos então que se podem validar os dados através de Regex mas existem outras formas de o fazer.</p>
<p>Imaginemos que temos um formulário que envia um campo de texto. Não podemos criar uma função em Regex para o efeito, assim temos de utilizar outras funções mais ou menos complexas para fazer a limpeza destes dados (recomendo o estudo das funções de validação da Kohana ou CodeIgniter).</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> proteger<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$str</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Com esta função adicionamos alguma segurança ao nosso código limpando tags como as utilizadas em ataques XSS e limpamos os dados contra SQL Injection. (Atenção: esta função não inibe todos os ataques apenas os dificulta um pouco).</p>
<p>Existe também uma forma de melhorar a segurança que dá menos trabalho pois apenas com algumas linhas de código podemos limpar todos os dados passados por $_POST, $_GET, $_REQUEST, $_COOKIE, $_SESSION, etc.</p>
<p>Eu normalmente crio um ficheiro que incluo no inicio de cada página parecido com o seguinte:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> proteger<span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> proteger<span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_REQUEST</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> proteger<span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_COOKIE</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$_COOKIE</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> proteger<span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> proteger<span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h2>Ambiente de Teste vs. Ambiente Real</h2>
<p>Um dos problemas com que me deparava quando me iniciei no desenvolvimento de aplicações web em PHP (como o tempo passa&#8230;) era a mudança de variáveis entre o ambiente de teste e o real, como por exemplo as configurações da base de dados&#8230;</p>
<p>Até ter adoptado uma metodologia que me permitia ao alterar apenas uma linha alternar entre os ambientes.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'LIVE'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>LIVE<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #990000;">error_reporting</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_HOST'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'localhost'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_USER'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_PASSWORD'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_DATABASE'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'basededadosxpto'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
<span style="color: #990000;">error_reporting</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">E_ALL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_HOST'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'joaopedropereira.com'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_USER'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'joao'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_PASSWORD'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'pedro'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_DATABASE'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'joao_basededados'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Com esta metodologia só preciso de modificar a linha que define a constante LIVE como true ou false conforme esteja a trabalhar num ou noutro ambiente, podem também verificar ali a alteração do <a title="error_reporting" href="http://www.php.net/manual/pt_BR/function.error-reporting.php" target="_blank">error_reporting</a>, enquanto no caso do Ambiente Real não quero que sejam mostrados nenhuns erros aos visitantes por questões quer de segurança quer de aspecto, no caso do Ambiente de Teste quero saber todos os pormenores.</p>
<h2>Utilizar Output Buffering</h2>
<p>Utilizar Output Buffering é uma excelente maneira de optimizar a performance de uma aplicação em PHP. Sem Output Buffering a sua aplicação só vai mostrar o HTML no fim de toda a página estar carregada, com o Output Buffering a sua aplicação mostra o HTML já carregado quando o programador ordena!</p>
<p>O Developer Brian Cray criou um artigo muito interessante sobre este assunto para a DevTips. <a title="Output Buffering for Web Developers, a Beginner’s Guide" href="http://dev-tips.com/featured/output-buffering-for-web-developers-a-beginners-guide" target="_blank">Veja-o aqui</a>.</p>
<h2>Utilizar Sistemas de Caching</h2>
<p>Os Sistemas de Caching são interessantes para aumentar a performance de uma aplicação em PHP. No entanto há que ter em atenção alguns aspectos como por exemplo numa amostragem de resultados em tempo real não se podem utilizar sistemas de caching ou então teremos dados desactualizados&#8230;</p>
<p>Existem sistemas prontos a usar mas também podemos desenvolver o nosso sistema de caching como por exemplo algo do género:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$cache_file</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'cache_files/'</span> <span style="color: #339933;">.</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'SCRIPT_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$cache_time</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1200</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">60</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//60min*6 * 60 segundos (6HORAS)</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cache_file</span><span style="color: #009900;">&#41;</span> AND <span style="color: #990000;">is_readable</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cache_file</span><span style="color: #009900;">&#41;</span> AND <span style="color: #009900;">&#40;</span><span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$cachetime</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">filemtime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cache_file</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cache_file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
<span style="color: #990000;">ob_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* o código do ficheiro */</span>
&nbsp;
<span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cachefile</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'w'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #339933;">,</span> <span style="color: #990000;">ob_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">ob_end_flush</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Sistemas de Caching:</p>
<ul>
<li><a title="Memcached" href="http://www.danga.com/memcached/" target="_blank">Memcached</a></li>
<li><a title="APC" href="http://us.php.net/manual/pt_BR/intro.apc.php" target="_blank">APC</a></li>
<li><a title="XCache" href="http://xcache.lighttpd.net/" target="_blank">XCache</a></li>
</ul>
<h2>Eu não mordo&#8230;</h2>
<p>Não tenha medo de comentar, não tenha medo de perguntar, de criticar ou elogiar! Qualquer dúvida pergunte, qualquer reparo faça-o, todas as opiniões e comentários são bem vindos aqui no blog.</p>
<p>Pode também divulgar o artigo, eu não acuso ninguém que divulgue o meu artigo nas diversas redes sociais ou nos próprios blogs (mencionando a fonte ou autor) de plágio <img src='http://joaopedropereira.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<ul></ul>
</pre>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;n=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;pli=1" rel="nofollow" class="external" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;t=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;link=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/" rel="nofollow" class="external" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;srcUrl=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;srcTitle=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;snippet=PHP%20%C3%A9%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20web%20server-side%20mais%20utilizada%20a%20n%C3%ADvel%20Mundial%20e%20neste%20artigo%20v%C3%A3o%20ser%20retratados%20os%20aspectos%20que%20devem%20fazer%20parte%20do%20estudo%2C%20do%20caminho%20de%20um%20WebDeveloper%20que%20quer%20desenvolver%20em%20PHP.%20Entre%20eles%20Boas%20pr%C3%A1ticas%2C%20Frameworks%2C%20Seguran%C3%A7a%2C%20Caching%2C%20Buffering%20e%20Envir" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;summary=PHP%20%C3%A9%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20web%20server-side%20mais%20utilizada%20a%20n%C3%ADvel%20Mundial%20e%20neste%20artigo%20v%C3%A3o%20ser%20retratados%20os%20aspectos%20que%20devem%20fazer%20parte%20do%20estudo%2C%20do%20caminho%20de%20um%20WebDeveloper%20que%20quer%20desenvolver%20em%20PHP.%20Entre%20eles%20Boas%20pr%C3%A1ticas%2C%20Frameworks%2C%20Seguran%C3%A7a%2C%20Caching%2C%20Buffering%20e%20Envir&amp;source=The Blog of a WebDeveloper" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22O%20WebDeveloper%20que%20Utiliza%20PHP%20%3A%3A%20Caminho%22&amp;body=Link: http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A PHP%20%C3%A9%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20web%20server-side%20mais%20utilizada%20a%20n%C3%ADvel%20Mundial%20e%20neste%20artigo%20v%C3%A3o%20ser%20retratados%20os%20aspectos%20que%20devem%20fazer%20parte%20do%20estudo%2C%20do%20caminho%20de%20um%20WebDeveloper%20que%20quer%20desenvolver%20em%20PHP.%20Entre%20eles%20Boas%20pr%C3%A1ticas%2C%20Frameworks%2C%20Seguran%C3%A7a%2C%20Caching%2C%20Buffering%20e%20Envir" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-newsvine">
			<a href="http://www.newsvine.com/_tools/seed&amp;save?u=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;h=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Seed this on Newsvine">Seed this on Newsvine</a>
		</li>
		<li class="shr-orkut">
			<a href="http://promote.orkut.com/preview?nt=orkut.com&amp;tt=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;du=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;cn=PHP%20%C3%A9%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20web%20server-side%20mais%20utilizada%20a%20n%C3%ADvel%20Mundial%20e%20neste%20artigo%20v%C3%A3o%20ser%20retratados%20os%20aspectos%20que%20devem%20fazer%20parte%20do%20estudo%2C%20do%20caminho%20de%20um%20WebDeveloper%20que%20quer%20desenvolver%20em%20PHP.%20Entre%20eles%20Boas%20pr%C3%A1ticas%2C%20Frameworks%2C%20Seguran%C3%A7a%2C%20Caching%2C%20Buffering%20e%20Envir" rel="nofollow" class="external" title="Promote this on Orkut">Promote this on Orkut</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-sphinn">
			<a href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/" rel="nofollow" class="external" title="Sphinn this on Sphinn">Sphinn this on Sphinn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;title=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-techmeme">
			<a href="http://twitter.com/home/?status=Tip+@Techmeme+http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/+&quot;O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&quot;&amp;source=shareaholic" rel="nofollow" class="external" title="Tip this to TechMeme">Tip this to TechMeme</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F08%2F15%2Fphp-developer-caminho%2F&amp;t=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho" rel="nofollow" class="external" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho+-+http://bit.ly/bl1BEG&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-yahoobuzz">
			<a href="http://buzz.yahoo.com/submit/?submitUrl=http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/&amp;submitHeadline=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;submitSummary=PHP%20%C3%A9%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20web%20server-side%20mais%20utilizada%20a%20n%C3%ADvel%20Mundial%20e%20neste%20artigo%20v%C3%A3o%20ser%20retratados%20os%20aspectos%20que%20devem%20fazer%20parte%20do%20estudo%2C%20do%20caminho%20de%20um%20WebDeveloper%20que%20quer%20desenvolver%20em%20PHP.%20Entre%20eles%20Boas%20pr%C3%A1ticas%2C%20Frameworks%2C%20Seguran%C3%A7a%2C%20Caching%2C%20Buffering%20e%20Envir&amp;submitCategory=science&amp;submitAssetType=text" rel="nofollow" class="external" title="Buzz up!">Buzz up!</a>
		</li>
		<li class="shr-yahoomail">
			<a href="http://compose.mail.yahoo.com/?Subject=O+WebDeveloper+que+Utiliza+PHP+%3A%3A+Caminho&amp;body=Link: http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A PHP%20%C3%A9%20a%20linguagem%20de%20programa%C3%A7%C3%A3o%20web%20server-side%20mais%20utilizada%20a%20n%C3%ADvel%20Mundial%20e%20neste%20artigo%20v%C3%A3o%20ser%20retratados%20os%20aspectos%20que%20devem%20fazer%20parte%20do%20estudo%2C%20do%20caminho%20de%20um%20WebDeveloper%20que%20quer%20desenvolver%20em%20PHP.%20Entre%20eles%20Boas%20pr%C3%A1ticas%2C%20Frameworks%2C%20Seguran%C3%A7a%2C%20Caching%2C%20Buffering%20e%20Envir" rel="nofollow" class="external" title="Email this via Yahoo! Mail">Email this via Yahoo! Mail</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://joaopedropereira.com/blog/2009/08/15/php-developer-caminho/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Criar uma aplicação com boa Usabilidade: O quê? Porquê? Como?</title>
		<link>http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/</link>
		<comments>http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 23:38:31 +0000</pubDate>
		<dc:creator>João Pedro Pereira</dc:creator>
				<category><![CDATA[Acessibilidade]]></category>
		<category><![CDATA[Optimização]]></category>
		<category><![CDATA[Usabilidade]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[aplicação web]]></category>
		<category><![CDATA[design efficiency]]></category>
		<category><![CDATA[ergonomia]]></category>
		<category><![CDATA[interface web]]></category>

		<guid isPermaLink="false">http://joaopedropereira.com/blog/?p=389</guid>
		<description><![CDATA[O que é a Usabilidade? A Usabilidade é um termo utilizado para mostrar a facilidade de utilização e compreensão de uma interface, está directamente ligada à facilidade que o utilizador tem em alcançar os seus objectivos. A  o estudo da Usabilidade numa aplicação web é muito importante para tornar a aplicação web mais eficiente e [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F07%2F20%2Faplicacao-boa-usabilidade%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F07%2F20%2Faplicacao-boa-usabilidade%2F&amp;source=joaoppereira&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<h2>O que é a Usabilidade?</h2>
<p>A Usabilidade é um termo utilizado para mostrar a facilidade de utilização e compreensão de uma interface, está directamente ligada à facilidade que o utilizador tem em alcançar os seus objectivos.</p>
<p>A  o estudo da Usabilidade numa aplicação web é muito importante para tornar a aplicação web mais eficiente e produtiva! A Usabilidade está também intimamente relaccionada com a Acessibilidade de uma aplicação web e sua Optimização, e em casos não relaccionados com o assunto especifico de criação de uma aplicação web também são tidos em conta no estudo da Usabilidade aspectos como a ergonomia.</p>
<p>Podemos definir Usabilidade separando-a em vários componentes:</p>
<blockquote>
<ul>
<li>Learnability: How easy is it for users to accomplish basic tasks the first time they encounter the design?</li>
<li>Efficiency: Once users have learned the design, how quickly can they perform tasks?</li>
<li>Memorability: When users return to the design after a period of not using it, how easily can they reestablish proficiency?</li>
<li>Errors: How many errors do users make, how severe are these errors, and how easily can they recover from the errors?</li>
<li>Satisfaction: How pleasant is it to use the design?</li>
</ul>
</blockquote>
<p style="text-align: right;"><span style="text-decoration: underline;">Fonte:</span> <a title="Usability 101: Introduction to Usability" href="http://www.useit.com/alertbox/20030825.html" target="_blank">Usability 101: Introduction to Usability</a></p>
<h2>Porque devem ser feitos estudos de Usabilidade?</h2>
<p>Na criação de aplicações web um dos pontos que se deve ter sempre em mente durante a fase de desenho da interface é a Usabilidade da mesma, é necessário ver a <strong>Usabilidade como condição essêncial para qualquer interface</strong>! <span id="more-389"></span></p>
<p>Se uma interface web for de uso dificil, se fôr confusa, se não transmitir a mensagem chave da aplicação, se não permitir entender o que existe naquela aplicação, se for cansativa e mal organizada, entre outras questões, o visitante não irá continuar a navegar.</p>
<p>Salvo raras excepções, <strong>os visitantes não vão perder tempo a tentar entender a sua interface, se encontrarem alguma dificuldade na utilização da aplicação saem!</strong></p>
<p>Assim, podemos concluir que, quando presentes de uma interface com fraca Usabilidade (a Acessibilidade também entra nesta questão) o visitante não vai perder tempo e vai sair da página, deste modo, no caso de páginas de venda de produtos ou de promoção de empresas o volume de negócios vai ser bem menor do que o que seria com uma melhor interface. <strong>Um visitante não pode comprar algo que não encontra!</strong></p>
<p style="text-align: center;"><strong>Mais Usabilidade = Sucesso</strong></p>
<h2>Como verificar a Usabilidade de uma interface?</h2>
<p>Um erro muito comum nas pessoas que planeiam e desenham uma interface é esquecerem-se que os visitantes não sabem conhecem a interface aquando da sua primeira utilização, e como os visitantes caso tenham uma má experiência não voltam, é então imperativo que a aplicação seja testada por utilizadores não conhecedores do seu modo de funcionamento. Existem assim dois testes que podem ser realizados.</p>
<ol>
<li>A utilização de sistemas de tracking que permitam verificar tudo o que é feito pelos visitantes. Sabendo onde clicam, em que página desistem, quantos cliques necessitam para realizar uma tarefa, o tempo passado na página, etc. podendo inclusivé utilizar duas interfaces distintas (utilizar algum script para fazer alternar) de forma a ver qual das duas é melhor ao nível de Usabilidade, a que trouxer mais lucros (monetários ou não, dependo do sentido da aplicação) será à partida a de melhor Usabilidade</li>
<li>A escolha de um certo número de utilizadores que possam fazer o teste da aplicação e no fim pedir a opinião e sugestões aos mesmos.</li>
</ol>
<h2>Dicas para criar aplicações com boa Usabilidade</h2>
<p>As aplicações web:</p>
<ul>
<li>devem-se explicar a si mesmas</li>
<li>devem ser funcionais</li>
<li>devem ser optimizadas para um rápido feedback</li>
<li>devem sempre ter uma funcionalidade de pesquisa</li>
<li>devem permitir formar um sitemap mental a partir do menu principal</li>
<li>devem permitir realizar qualquer tarefa em, no máximo, 3 passos</li>
<li>devem ter conteúdo organizado e ligações para todas as áreas da aplicação</li>
<li>não devem fazer o visitante pensar</li>
<li>não devem fazer o visitante perder tempo</li>
<li>não devem ser confusas</li>
<li>não devem ter informação redundante</li>
<li>não devem induzir em erro</li>
<li>não devem ter um design inapropriado ou irritante</li>
</ul>
<h2>Opinião</h2>
<p>E vocês o que pensam relativamente a este tema? Que aspectos têm em conta na criação das interfaces dos vossos trabalhos e dos vossos projectos? Partilhem <img src='http://joaopedropereira.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<ul></ul>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;n=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F&amp;pli=1" rel="nofollow" class="external" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;title=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;title=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;t=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F&amp;link=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/" rel="nofollow" class="external" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;title=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F&amp;srcUrl=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;srcTitle=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F&amp;snippet=O%20que%20%C3%A9%20a%20Usabilidade%3F%0D%0AA%20Usabilidade%20%C3%A9%20um%20termo%20utilizado%20para%20mostrar%20a%20facilidade%20de%20utiliza%C3%A7%C3%A3o%20e%20compreens%C3%A3o%20de%20uma%20interface%2C%20est%C3%A1%20directamente%20ligada%20%C3%A0%20facilidade%20que%20o%20utilizador%20tem%20em%20alcan%C3%A7ar%20os%20seus%20objectivos.%0D%0A%0D%0AA%20%C2%A0o%20estudo%20da%20Usabilidade%20numa%20aplica%C3%A7%C3%A3o%20web%20%C3%A9%20muito%20important" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;title=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F&amp;summary=O%20que%20%C3%A9%20a%20Usabilidade%3F%0D%0AA%20Usabilidade%20%C3%A9%20um%20termo%20utilizado%20para%20mostrar%20a%20facilidade%20de%20utiliza%C3%A7%C3%A3o%20e%20compreens%C3%A3o%20de%20uma%20interface%2C%20est%C3%A1%20directamente%20ligada%20%C3%A0%20facilidade%20que%20o%20utilizador%20tem%20em%20alcan%C3%A7ar%20os%20seus%20objectivos.%0D%0A%0D%0AA%20%C2%A0o%20estudo%20da%20Usabilidade%20numa%20aplica%C3%A7%C3%A3o%20web%20%C3%A9%20muito%20important&amp;source=The Blog of a WebDeveloper" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Criar%20uma%20aplica%C3%A7%C3%A3o%20com%20boa%20Usabilidade%3A%20O%20qu%C3%AA%3F%20Porqu%C3%AA%3F%20Como%3F%22&amp;body=Link: http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A O%20que%20%C3%A9%20a%20Usabilidade%3F%0D%0AA%20Usabilidade%20%C3%A9%20um%20termo%20utilizado%20para%20mostrar%20a%20facilidade%20de%20utiliza%C3%A7%C3%A3o%20e%20compreens%C3%A3o%20de%20uma%20interface%2C%20est%C3%A1%20directamente%20ligada%20%C3%A0%20facilidade%20que%20o%20utilizador%20tem%20em%20alcan%C3%A7ar%20os%20seus%20objectivos.%0D%0A%0D%0AA%20%C2%A0o%20estudo%20da%20Usabilidade%20numa%20aplica%C3%A7%C3%A3o%20web%20%C3%A9%20muito%20important" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;title=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F&amp;url=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-newsvine">
			<a href="http://www.newsvine.com/_tools/seed&amp;save?u=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;h=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F" rel="nofollow" class="external" title="Seed this on Newsvine">Seed this on Newsvine</a>
		</li>
		<li class="shr-orkut">
			<a href="http://promote.orkut.com/preview?nt=orkut.com&amp;tt=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F&amp;du=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;cn=O%20que%20%C3%A9%20a%20Usabilidade%3F%0D%0AA%20Usabilidade%20%C3%A9%20um%20termo%20utilizado%20para%20mostrar%20a%20facilidade%20de%20utiliza%C3%A7%C3%A3o%20e%20compreens%C3%A3o%20de%20uma%20interface%2C%20est%C3%A1%20directamente%20ligada%20%C3%A0%20facilidade%20que%20o%20utilizador%20tem%20em%20alcan%C3%A7ar%20os%20seus%20objectivos.%0D%0A%0D%0AA%20%C2%A0o%20estudo%20da%20Usabilidade%20numa%20aplica%C3%A7%C3%A3o%20web%20%C3%A9%20muito%20important" rel="nofollow" class="external" title="Promote this on Orkut">Promote this on Orkut</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;title=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;title=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-sphinn">
			<a href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/" rel="nofollow" class="external" title="Sphinn this on Sphinn">Sphinn this on Sphinn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;title=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-techmeme">
			<a href="http://twitter.com/home/?status=Tip+@Techmeme+http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/+&quot;Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F&quot;&amp;source=shareaholic" rel="nofollow" class="external" title="Tip this to TechMeme">Tip this to TechMeme</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F07%2F20%2Faplicacao-boa-usabilidade%2F&amp;t=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F" rel="nofollow" class="external" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F+-+http://bit.ly/bTfFEr&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-yahoobuzz">
			<a href="http://buzz.yahoo.com/submit/?submitUrl=http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/&amp;submitHeadline=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F&amp;submitSummary=O%20que%20%C3%A9%20a%20Usabilidade%3F%0D%0AA%20Usabilidade%20%C3%A9%20um%20termo%20utilizado%20para%20mostrar%20a%20facilidade%20de%20utiliza%C3%A7%C3%A3o%20e%20compreens%C3%A3o%20de%20uma%20interface%2C%20est%C3%A1%20directamente%20ligada%20%C3%A0%20facilidade%20que%20o%20utilizador%20tem%20em%20alcan%C3%A7ar%20os%20seus%20objectivos.%0D%0A%0D%0AA%20%C2%A0o%20estudo%20da%20Usabilidade%20numa%20aplica%C3%A7%C3%A3o%20web%20%C3%A9%20muito%20important&amp;submitCategory=science&amp;submitAssetType=text" rel="nofollow" class="external" title="Buzz up!">Buzz up!</a>
		</li>
		<li class="shr-yahoomail">
			<a href="http://compose.mail.yahoo.com/?Subject=Criar+uma+aplica%C3%A7%C3%A3o+com+boa+Usabilidade%3A+O+qu%C3%AA%3F+Porqu%C3%AA%3F+Como%3F&amp;body=Link: http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A O%20que%20%C3%A9%20a%20Usabilidade%3F%0D%0AA%20Usabilidade%20%C3%A9%20um%20termo%20utilizado%20para%20mostrar%20a%20facilidade%20de%20utiliza%C3%A7%C3%A3o%20e%20compreens%C3%A3o%20de%20uma%20interface%2C%20est%C3%A1%20directamente%20ligada%20%C3%A0%20facilidade%20que%20o%20utilizador%20tem%20em%20alcan%C3%A7ar%20os%20seus%20objectivos.%0D%0A%0D%0AA%20%C2%A0o%20estudo%20da%20Usabilidade%20numa%20aplica%C3%A7%C3%A3o%20web%20%C3%A9%20muito%20important" rel="nofollow" class="external" title="Email this via Yahoo! Mail">Email this via Yahoo! Mail</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://joaopedropereira.com/blog/2009/07/20/aplicacao-boa-usabilidade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Torne o seu site mais rápido com Gzip</title>
		<link>http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/</link>
		<comments>http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 17:37:27 +0000</pubDate>
		<dc:creator>João Pedro Pereira</dc:creator>
				<category><![CDATA[Optimização]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[compressão]]></category>
		<category><![CDATA[gzip]]></category>

		<guid isPermaLink="false">http://joaopedropereira.com/blog/?p=372</guid>
		<description><![CDATA[Já utiliza a compressão gzip na sua página? Espero que sim, isto porque tal como vou mostrar hoje, comprimir a vossa página com gzip torna a página surpreendentemente mais rápida! Para demonstrar isto guardei a página da SAPO que é uma página com bastante conteúdo, e por isso bastante pesada, tem cerca de 413Kb. O [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F07%2F11%2Ftorne-site-mais-rapido-gzip%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F07%2F11%2Ftorne-site-mais-rapido-gzip%2F&amp;source=joaoppereira&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Já utiliza a <a title="HTTP Gzip Compression" href="http://www.websiteoptimization.com/speed/tweak/compress/" target="_blank">compressão gzip</a> na sua página? Espero que sim, isto porque tal como vou mostrar hoje, comprimir a vossa página com gzip torna a página surpreendentemente mais rápida!</p>
<p>Para demonstrar isto guardei a página da <a title="Portal SAPO" href="http://www.sapo.pt/" target="_blank">SAPO</a> que é uma página com bastante conteúdo, e por isso bastante pesada, tem cerca de 413Kb.</p>
<p style="text-align: center;"><a rel="nofollow" href="http://joaopedropereira.com/blog/wp-content/uploads/2009/07/sapo.png" target="_blank"><img class="aligncenter size-medium wp-image-373" title="SAPO" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/07/sapo-300x134.png" alt="SAPO" width="300" height="134" /></a></p>
<p style="text-align: left;">O que se poupa comprimindo os ficheiros com gzip? Velocidade e bandwidth, então para host&#8217;s em que este segundo é limitado esta é uma técnica imprescindível!</p>
<p style="text-align: left;">Nos testes seguintes apenas vou utilizar o ficheiro HTML da SAPO e não todos os recursos externos (imagens, css e JavaScript).</p>
<p style="text-align: left;"><span id="more-372"></span></p>
<h2>Teste 1</h2>
<h3>Tamanho</h3>
<pre>$ cat &lt; sapo.html | wc -c
68712</pre>
<pre>$ gzip &lt; sapo.html | wc -c
14890</pre>
<p>Em termos de tamanho vemos já que de 68,712bytes passamos para 14,890bytes, o gzip diminuiu o tamanho desta página em 53,822bytes, ~78% ! A página final ficou então com apenas 22% do tamanho original! É uma enorme diferença.</p>
<h3>Tempo de Compressão</h3>
<p>Há quem afirme que comprimir as páginas com gzip é lento, consome recursos no servidor e não traz grandes vantagens. Como vimos no exemplo anterior o gzip reduziu o tamanho da página em 78%! 78% é muita fruta.</p>
<p>Vamos então ver o tempo que demora a comprimir esta página.</p>
<pre>$ time gzip &lt; sapo.html &gt; /dev/null
real 0m0.005s
user 0m0.004s
sys 0m000s</pre>
<p>No meu laptop (Intel Core Duo T2350 @ 1.86Ghz) o gzip demorou 4ms a comprimir 68,712bytes, mas vamos testar com ficheiros maiores&#8230;</p>
<h2>Teste 2</h2>
<h3>Tamanho</h3>
<p>Para este teste, utilizando na mesma a página da SAPO guardada aumentei o seu tamanho copiando o código integralmente e colando-o no fim, várias vezes.</p>
<pre>$ cat &lt; sapo.html | wc -c
3023330</pre>
<p>Temos agora um ficheiro de 3,023,330bytes, cerca de 3Mb sem compressão alguma.</p>
<pre>$ gzip &lt; sapo.html | wc -c
631094</pre>
<p>Este ficheiro de aproximadamente 3Mb, comprimido com gzip fica com apenas 631,094bytes, 631Kb! Isto dá uma redução de 2,392,236bytes ou seja mais de 2Mb!</p>
<p>E 3Mb, quanto tempo demorará o gzip a comprimir?</p>
<h3>Tempo de Compressão</h3>
<pre>$ time gzip &lt; sapo.html &gt; /dev/null
real 0m0.189s
user 0m0.188s
sys 0m0.000s</pre>
<p>Desta vez foi bem mais lenta a compressão, mas mesmo assim a compressão demorou 189ms, se dividirmos o segundo em dez partes, a compressão utilizou pouco menos que duas dessas partes para comprimir 3Mb e passá-los para cerca de 600Kb!</p>
<h2>Conclusão</h2>
<p>Como vimos o algoritmo de compressão utilizado no gzip permitiu comprimir esta página em 78% ao nível do tamanho utilizando apenas 5ms para o fazer num laptop com vários programas a utilizar capacidade de processamento e que tem menos capacidade de processamento que um servidor actual, isto vai tornar a página mais rápida e vai utilizar menos bandwidth que muitas vezes é limitada em alguns planos de alojamento.</p>
<p>Vejamos então o gráfico seguinte para ver como se comporta a compressão gzip com o aumento do tamanho do ficheiro:</p>
<p style="text-align: center;"><a href="http://joaopedropereira.com/blog/wp-content/uploads/2009/07/gzipcompression.png"><img class="aligncenter size-full wp-image-387" title="gzip compression" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/07/gzipcompression.png" alt="gzip compression" width="503" height="349" /></a></p>
<p>Analisando vemos que quando temos uma página web com 1,9Mb o tempo de compressão é de 125ms, isto é, 0,125 segundos. É super raro existirem páginas com este tamanho ao nível de HTML, para não dizer que não existem mesmo (se conhece alguma envie o URL em baixo nos comentários).</p>
<p>Assim tendo em conta os resultados, podemos concluir que se deve utilizar gzip para comprimir os websites de forma a poupar tempo de espera ao utilizador e largura de banda no servidor e no utilizador.</p>
<p><strong>E vocês o que acham? Vale a pena ou não vale? Gostava de saber a vossa opinião.</strong></p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;n=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip&amp;pli=1" rel="nofollow" class="external" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;title=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;title=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;t=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip&amp;link=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/" rel="nofollow" class="external" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;title=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip&amp;srcUrl=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;srcTitle=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip&amp;snippet=J%C3%A1%20utiliza%20a%20compress%C3%A3o%20gzip%20na%20sua%20p%C3%A1gina%3F%20Espero%20que%20sim%2C%20isto%20porque%20tal%20como%20vou%20mostrar%20hoje%2C%20comprimir%20a%20vossa%20p%C3%A1gina%20com%20gzip%20torna%20a%20p%C3%A1gina%20surpreendentemente%20mais%20r%C3%A1pida%21%0D%0A%0D%0APara%20demonstrar%20isto%20guardei%20a%20p%C3%A1gina%20da%20SAPO%20que%20%C3%A9%20uma%20p%C3%A1gina%20com%20bastante%20conte%C3%BAdo%2C%20e%20por%20isso%20bastante%20p" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;title=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip&amp;summary=J%C3%A1%20utiliza%20a%20compress%C3%A3o%20gzip%20na%20sua%20p%C3%A1gina%3F%20Espero%20que%20sim%2C%20isto%20porque%20tal%20como%20vou%20mostrar%20hoje%2C%20comprimir%20a%20vossa%20p%C3%A1gina%20com%20gzip%20torna%20a%20p%C3%A1gina%20surpreendentemente%20mais%20r%C3%A1pida%21%0D%0A%0D%0APara%20demonstrar%20isto%20guardei%20a%20p%C3%A1gina%20da%20SAPO%20que%20%C3%A9%20uma%20p%C3%A1gina%20com%20bastante%20conte%C3%BAdo%2C%20e%20por%20isso%20bastante%20p&amp;source=The Blog of a WebDeveloper" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Torne%20o%20seu%20site%20mais%20r%C3%A1pido%20com%20Gzip%22&amp;body=Link: http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A J%C3%A1%20utiliza%20a%20compress%C3%A3o%20gzip%20na%20sua%20p%C3%A1gina%3F%20Espero%20que%20sim%2C%20isto%20porque%20tal%20como%20vou%20mostrar%20hoje%2C%20comprimir%20a%20vossa%20p%C3%A1gina%20com%20gzip%20torna%20a%20p%C3%A1gina%20surpreendentemente%20mais%20r%C3%A1pida%21%0D%0A%0D%0APara%20demonstrar%20isto%20guardei%20a%20p%C3%A1gina%20da%20SAPO%20que%20%C3%A9%20uma%20p%C3%A1gina%20com%20bastante%20conte%C3%BAdo%2C%20e%20por%20isso%20bastante%20p" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;title=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip&amp;url=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-newsvine">
			<a href="http://www.newsvine.com/_tools/seed&amp;save?u=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;h=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip" rel="nofollow" class="external" title="Seed this on Newsvine">Seed this on Newsvine</a>
		</li>
		<li class="shr-orkut">
			<a href="http://promote.orkut.com/preview?nt=orkut.com&amp;tt=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip&amp;du=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;cn=J%C3%A1%20utiliza%20a%20compress%C3%A3o%20gzip%20na%20sua%20p%C3%A1gina%3F%20Espero%20que%20sim%2C%20isto%20porque%20tal%20como%20vou%20mostrar%20hoje%2C%20comprimir%20a%20vossa%20p%C3%A1gina%20com%20gzip%20torna%20a%20p%C3%A1gina%20surpreendentemente%20mais%20r%C3%A1pida%21%0D%0A%0D%0APara%20demonstrar%20isto%20guardei%20a%20p%C3%A1gina%20da%20SAPO%20que%20%C3%A9%20uma%20p%C3%A1gina%20com%20bastante%20conte%C3%BAdo%2C%20e%20por%20isso%20bastante%20p" rel="nofollow" class="external" title="Promote this on Orkut">Promote this on Orkut</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;title=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;title=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-sphinn">
			<a href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/" rel="nofollow" class="external" title="Sphinn this on Sphinn">Sphinn this on Sphinn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;title=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-techmeme">
			<a href="http://twitter.com/home/?status=Tip+@Techmeme+http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/+&quot;Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip&quot;&amp;source=shareaholic" rel="nofollow" class="external" title="Tip this to TechMeme">Tip this to TechMeme</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F07%2F11%2Ftorne-site-mais-rapido-gzip%2F&amp;t=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip" rel="nofollow" class="external" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip+-+http://bit.ly/awX7Zu&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-yahoobuzz">
			<a href="http://buzz.yahoo.com/submit/?submitUrl=http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/&amp;submitHeadline=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip&amp;submitSummary=J%C3%A1%20utiliza%20a%20compress%C3%A3o%20gzip%20na%20sua%20p%C3%A1gina%3F%20Espero%20que%20sim%2C%20isto%20porque%20tal%20como%20vou%20mostrar%20hoje%2C%20comprimir%20a%20vossa%20p%C3%A1gina%20com%20gzip%20torna%20a%20p%C3%A1gina%20surpreendentemente%20mais%20r%C3%A1pida%21%0D%0A%0D%0APara%20demonstrar%20isto%20guardei%20a%20p%C3%A1gina%20da%20SAPO%20que%20%C3%A9%20uma%20p%C3%A1gina%20com%20bastante%20conte%C3%BAdo%2C%20e%20por%20isso%20bastante%20p&amp;submitCategory=science&amp;submitAssetType=text" rel="nofollow" class="external" title="Buzz up!">Buzz up!</a>
		</li>
		<li class="shr-yahoomail">
			<a href="http://compose.mail.yahoo.com/?Subject=Torne+o+seu+site+mais+r%C3%A1pido+com+Gzip&amp;body=Link: http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A J%C3%A1%20utiliza%20a%20compress%C3%A3o%20gzip%20na%20sua%20p%C3%A1gina%3F%20Espero%20que%20sim%2C%20isto%20porque%20tal%20como%20vou%20mostrar%20hoje%2C%20comprimir%20a%20vossa%20p%C3%A1gina%20com%20gzip%20torna%20a%20p%C3%A1gina%20surpreendentemente%20mais%20r%C3%A1pida%21%0D%0A%0D%0APara%20demonstrar%20isto%20guardei%20a%20p%C3%A1gina%20da%20SAPO%20que%20%C3%A9%20uma%20p%C3%A1gina%20com%20bastante%20conte%C3%BAdo%2C%20e%20por%20isso%20bastante%20p" rel="nofollow" class="external" title="Email this via Yahoo! Mail">Email this via Yahoo! Mail</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://joaopedropereira.com/blog/2009/07/11/torne-site-mais-rapido-gzip/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Diminuir Load Times no Carregamento de Páginas Web</title>
		<link>http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/</link>
		<comments>http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 22:23:47 +0000</pubDate>
		<dc:creator>João Pedro Pereira</dc:creator>
				<category><![CDATA[Acessibilidade]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Optimização]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[parallel load]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://joaopedropereira.com/blog/?p=178</guid>
		<description><![CDATA[Um aspecto muito importante que é necessário ter em conta aquando do desenvolvimento de páginas web é a acessibilidade de uma página e do tempo que a página demora a estar pronta para ser utilizada, pois caso o tempo de carregamento (load time) seja elevado, os visitantes não vão gostar podendo até retroceder e não [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F04%2F03%2Foptimizacao-websites%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F04%2F03%2Foptimizacao-websites%2F&amp;source=joaoppereira&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Um aspecto muito importante que é necessário ter em conta aquando do desenvolvimento de páginas web é a acessibilidade de uma página e do tempo que a página demora a estar pronta para ser utilizada, pois caso o tempo de carregamento (load time) seja elevado, os visitantes não vão gostar podendo até retroceder e não voltar a essa página, logo load times elevados correspondem quase que directamente a visitantes / utilizadores / membros / clientes perdidos.</p>
<p style="text-align: center"><strong>Tempo de carregamento baixo = &#8211; tempo perdido = utilizador contente</strong></p>
<p>Então podemos concluir que é necessário diminuir os tempos de carregamento das páginas e neste artigo vão ser abordadas várias formas de como reduzir os tempos de carregamento tendo em conta a optimização do JavaScript, do CSS, das imagens bem como optimização do lado do servidor nomeadamente com a utilização de PHP. <span id="more-178"></span></p>
<h2>JavaScript</h2>
<p>O JavaScript é uma linguagem que tem vindo, sucessivamente, a tornar-se cada vez mais popular entre os programadores de webservices pois tem aplicações desde a passagem de argumentos para o servidor sem ser necessário recarregar a página até aos efeitos que o JavaScript permite adicionar às páginas e seus elementos.  Mas, infelizmente, todas estas funcionalidades e coisas boas que o JavaScript traz tem um preço&#8230; Muitas vezes os ficheiros JavaScript tornam-se muito pesados, quer por serem bibliotecas como a jQuery, MooTools, dojo, ExtJS, etc. ou mesmo porque desenvolvemos grande parte da interface recorrendo a esta linguagem, o que vai adicionar centenas de kilobytes de informação às páginas. E o utilizador é exigente, quer páginas com tempos de carregamento baixos, mas também gosta de todas as facilidades e das interfaces que o JavaScript lhe proporciona. Assim, torna-se necessário, para não causar descontentamento no utilizador, correlacionar estes dois aspectos, é importante encontrar um ponto de equilibro.  Como encontrar um ponto de equilibro entre a utilização &#8220;massiva&#8221; de JavaScript e a exigência dos utilizadores?</p>
<h3>Conteúdo duplicado para quê?</h3>
<p>Sim, pode parecer óbvio que não se deve ter o mesmo script repetido na mesma página mas é algo que é muito comum e vai gerar dois pedidos HTTP por cada componente a descarregar e utilizar mais capacidade de processamento por parte do browser do utilizador, factores que levam a que a página demore mais tempo a ser carregada inutilmente. Verifique sempre se não tem conteúdo duplicado por acaso!  Uma outra solução é utilizar PHP, ou outra linguagem server-side, para adicionar os ficheiros JavaScript ao HTML e verificar se já foi adicionado ou não, tornando assim o código mais profissional e menos susceptivel a falhas e/ou faltas de atenção / verificação.</p>
<h3>Colocar os scripts no fundo da página</h3>
<p>O grande problema com os scripts é que os browsers não permitem descarregar mais nenhum componente externo enquanto está a descarregar um script.  Para optimizar o carregamento da página é então aconselhável que se movam os scripts para o fundo do body, no entanto, existem scripts que não podem ser movidos para o fundo pois passam conteúdo valioso para a página (por exemplo).  Uma solução alternativa é utilizar o atributo defer.</p>
<blockquote><p>&#8220;When set, this boolean attribute provides a hint to the user agent that the script is not going to generate any document content (e.g., no &#8220;document.write&#8221; in javascript) and thus, the user agent can continue parsing and rendering.&#8221; (<a title="Designing documents for user agents that support scripting" href="http://www.w3.org/TR/html4/interact/scripts.html#h-18.2" target="_blank">ver aqui</a>)</p></blockquote>
<p>Assim ao utilizar o atributo defer estamos a dizer ao browser que pode continuar a carregar a página e carregar o script apenas no fim. O que vai reduzir substancialmente o tempo de carregamento, tal como é pretendido.</p>
<h3>Descarregar ficheiros em paralelo</h3>
<p>Caso façamos uma introdução &#8220;normal&#8221; na nossa página de ficheiros JavaScript isso vai fazer com que os ficheiros sejam descarregados um de cada vez, diminuindo assim o tempo de carregamento da página.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">(...)&lt;script src=&quot;script1.js&quot; type=&quot;text/javascript&quot;&gt;&lt;!--mce:0--&gt;&lt;/script&gt;
&lt;script src=&quot;script2.js&quot; type=&quot;text/javascript&quot;&gt;&lt;!--mce:1--&gt;&lt;/script&gt;
(...)</pre></div></div>

<p><img class="aligncenter size-medium wp-image-281" title="Not Parallel Download" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/04/not_parallel-300x30.png" alt="Not Parallel Download" width="300" height="30" /></p>
<p>Utilizando a forma normal de inserir os scripts na página vai acontecer que o script2.js só começa a ser descarregado depois do script1.js estar completamente descarregado. Mas para quê esta espera se os acessos de hoje são de banda larga e suportam altas velocidades? Podemos descarregar ambos paralelamente, ao mesmo tempo.</p>
<p>Caso os ficheiros sejam descarregados de forma paralela o tempo de carregamento da página vai diminuir, e como podemos fazer isso? É tão simples como saber utilizar o document.write</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">(...)
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;&lt;!--</span>mce<span style="color: #339933;">:</span><span style="color: #CC0000;">2</span><span style="color: #339933;">--&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span>&lt;script src=&quot;script1.js&quot; type=&quot;text/javascript&quot;&gt;&lt;!--mce:3--&gt;&lt;/script&gt;&lt;script src=&quot;script2.js&quot; type=&quot;text/javascript&quot;&gt;&lt;!--mce:4--&gt;&lt;/script&gt;
(...)</pre></div></div>

<p><img class="aligncenter size-medium wp-image-282" title="Parallel Download" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/04/parallel-300x31.png" alt="Parallel Download" width="300" height="31" /></p>
<p>Como podemos observar, o segundo exemplo permite que os ficheiros sejam descarregados mais rápidamente pois o download é efectuado ao mesmo tempo. Para mais informações sobre downloads em paralelo continue a ler o artigo e na secção Server-Side este tema será novamente abordado.</p>
<h3>Ferramentas para a optimização de código JavaScript</h3>
<ul>
<li><a title="Javascript Compressor - compress code online for free" href="http://javascriptcompressor.com/" target="_blank">Javascript Compressor &#8211; compress code online for free</a></li>
<li><a title="YUI Compressor" href="http://developer.yahoo.com/yui/compressor/" target="_blank">YUI Compressor</a></li>
</ul>
<h2>CSS</h2>
<p>Todas as páginas web utilizam folhas de estilo (<a title="Mais Informações sobre CSS" href="http://pt.wikipedia.org/wiki/Cascading_Style_Sheets" target="_blank">CSS -Cascading Style Sheets</a>) e dependendo do design e da estrutura da folha de estilo esta pode ser maior ou menor mas em ambos os casos leva tempo a carregar e esse tempo deve, tal como nos outros pontos abordados neste artigo, de ser diminuido ao máximo! Além da validação sempre necessária vão ser apresentadas algumas formas de optimizar o código CSS. (<a title="CSS Validator" href="http://jigsaw.w3.org/css-validator/" target="_blank">validar CSS aqui</a>).</p>
<h3>Folhas de estilo no topo</h3>
<p>Colocar as folhas de estilo no topo da página faz com que as páginas possam carregar progressivamente e que o utilizador vá vendo o design a surgir. É muito importante dar aos utilizadores um feedback visual mal seja possível (<a title="Response Times: The Three Important Limits" href="http://www.useit.com/papers/responsetime.html" target="_blank">ver estudo aqui</a>), no caso de uma página web a estrutura da página é o nosso indicador de progressão no carregamento da página. Ao carregar a estrutura progressivamente da página (exemplo: header -&gt; menu -&gt; left sidebar -&gt; contéudo) tudo isto vai servir como feedback visual para o visitante que está à espera da página.  Caso as folhas de estilo aparecessem mais para o fim, o utilizador enquanto a página fosse carregando iria ter um visual sem estilo algum, sem uma ordem, e por isso pode facilmente desinteressar-se pela página.  É também uma especificação HTML dada pelo World Wide Web Consortium (<a title="Document relationships: the LINK element" href="http://www.w3.org/TR/html4/struct/links.html#h-12.3" target="_blank">ver aqui</a></p>
<p>).</p>
<h3>Optimizar o Código CSS</h3>
<p>Existem várias formas de se optimizar o código CSS sem reduzir de forma alguma as suas capacidades tornando apenas o código mais pequeno e mais conciso.  Exemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#div_xpto</span> <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">padding-top</span><span style="color: #00AA00;">:</span><span style="color: #933;">15px</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">padding-bottom</span><span style="color: #00AA00;">:</span><span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">padding-left</span><span style="color: #00AA00;">:</span><span style="color: #933;">13px</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">padding-right</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Neste exemplo podem ser feitas duas alterações de forma a optimizar o código.  Unir as componentes da propriedade padding na própria propriedade. A ordem é sempre  top, right, bottom, left (Menomónica possível: TR BL).</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#div_xpto</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">15px</span> <span style="color: #933;">0px</span> <span style="color: #933;">10px</span> <span style="color: #933;">13px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Em vez de utilizarmos 6 linhas utilizamos 1 linha, obtendo o mesmo efeito. Neste exemplo existe ainda outra modificação que podemos fazer que é a de retirar caracteres desnecessários.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#div_xpto</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">15px</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">10px</span> <span style="color: #933;">13px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Como é possível verificar foi retirado depois do 0 os caracteres px porque 0 é uma medida igual quer em pt, px, em, etc. logo é tempo de carregamento (devido a ser um ficheiro menor) que ganhamos.  Caso as medidas padding-top e padding-bottom sejam iguais é possível utilizarmos algo assim: (consideremos as medidas top e bottom de 15px)</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#div_xpto</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">15px</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Ou seja combinar a componente top e a componente bottom na mesma.  Também a nível do background (quase todos os websites utilizam esta propriedade) devem ser feitas optimizações:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">div <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">background-image</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;fundo.jpg&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#ffffff</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">background-repeat</span><span style="color: #3333ff;">:repeat-</span>x<span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #3333ff;">:<span style="color: #000000; font-weight: bold;">top</span> </span>center<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Passa a:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">div <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;fundo.jpg&quot;</span><span style="color: #00AA00;">&#41;</span> <span style="color: #cc00cc;">#fff</span> <span style="color: #000000; font-weight: bold;">top</span> <span style="color: #993333;">center</span> <span style="color: #993333;">repeat-x</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Neste exemplo fizeram-se duas alterações, passaram-se as várias componentes do background tudo para a propriedade sem particionamento e a cor passou de #ffffff a #fff. Esta útlima alteração das cores também pode ser utilizada de forma a optimizar o código.  Se se definam cores utilizando o standard de 6 digitos este pode ser definido apenas por 3 digitos em certos casos. Como por exemplo:  Preto #000000 passa para #000 Branco #ffffff passa para #fff Verde #99ff33 passa para #9f3 Orange #ffcc00 passa para #fc0 Vermelho #ff3300 passa para #f30  Mas por exemplo #930f14 já não pode ser simplificada.  Esta técnica funciona para todas as cores seguras (<a title="Web Safe Colors Palette" href="http://www.lynda.com/resources/webpalette.aspx" target="_blank">ver aqui tabela</a>).  É também muito comum uma outra optmização a nível do código CSS que é combinar elementos. Se tivermos dois elementos que tenham certas caracteristicas iguais, então em vez de se definir duas vezes a mesma caracteristica define-se apenas uma vez englobando ambos os elementos o que torna o código mais limpo e mais leve. Exemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">p <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">13px</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#000</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.texto</span> <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">13px</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#360</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Como podemos reparar as caracteristicas border, padding margin e font-size são idênticas quer na tag p quer na class .texto. Assim em vez de se definirem essas propriedades duas vezes podem ser definidas apenas uma:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">p<span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.texto</span> <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">13px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<h3>Ferramentas para Optimização de CSS</h3>
<ul>
<li><a title="CSS Drive - CSS Compressor" href="http://www.cssdrive.com/index.php/main/csscompressor" target="_blank">CSS Drive &#8211;  CSS Compressor</a></li>
<li><a title="Cascading Style Sheets Optimization" href="http://www.cssoptimiser.com/" target="_blank">Cascading Style Sheets Optimization</a></li>
<li><a title="Clean CSS" href="http://www.cleancss.com/" target="_blank">Clean CSS</a></li>
</ul>
<h3>Leitura complementar:</h3>
<ul>
<li><a title="CSS Sprites" href="http://www.alistapart.com/articles/sprites/" target="_blank">CSS Sprites</a></li>
</ul>
<h2>JavaScript / CSS</h2>
<h3>JavaScript e CSS em ficheiros externos</h3>
<p>Uma pergunta que se faz muitas vezes é se os ficheiros JavaScript e os ficheiros CSS devem estar em ficheiros à parte ou na própria página.  Utilizar ficheiros externos torna as páginas mais rápidas porque os ficheiros ficam na cache do browser equanto que se estiverem na página são descarregados sempre que é feito um pedido do documento, assim, ao utilizar ficheiros externos, reduz-se o tamanho da página mas aumenta-se o número de pedidos HTTP, contudo, os ficheiros externos ficam na cache do browser, logo diminui-se os pedidos HTTP e o tamanho da página utilizando ficheiros externos.  Além da optimização da página, utilizar ficheiros externos torna o código mais estruturado, mais fácilmente editável e mais limpo sendo então uma boa prática para manutenção da página.</p>
<h2>Imagens</h2>
<p>Os designs mais eye-candy com a utilização de vários icons para descrever serviços, os efeitos dos fundos, dos headers, dos footers, etc. utilizam bastantes imagens, maiores ou menores mas que, de qualquer modo, levam a que o tempo de carregamento da página seja maior.  E o que há fazer? São só imagens&#8230; Há alguns truques que podem ser utilizados para aumentar a velocidade de carregamento de imagens.</p>
<h3>Não redimensione imagens em HTML!</h3>
<p>Este ponto é de facto importante, muitas vezes carregam-se imagens, imaginemos, de 500x500px e depois em HTML definem-se medidas menores, isto é desnecessário e vai obrigar a que uma imagem maior seja carregada em vez de uma menor. Ou seja, em vez de se fazer algo assim</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;img src=&quot;image.png&quot; alt=&quot;Imagem xpto&quot; width=&quot;50px&quot; height=&quot;50px&quot; /&gt;</pre></div></div>

<p>com a imagem image.png a ter um tamanho de 500x500px deve-se ter</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;img src=&quot;image.png&quot; alt=&quot;Imagem xpto&quot; /&gt;</pre></div></div>

<p>tendo a imagem image.png o tamanho de 50x50px.</p>
<p>É também importante manter sempre as dimensões da imagem mesmo quando ela é exacta, isto é, no caso anterior mesmo já tendo a imagem 50x50px como queremos devemos indicar width=&#8221;50px&#8221; height=&#8221;50px&#8221; porque deste modo o browser não tem de &#8220;medir&#8221; a imagem antes de a colocar na página ficando então da seguinte forma:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;img src=&quot;image.png&quot; alt=&quot;Imagem xpto&quot; width=&quot;50px&quot; height=&quot;50px&quot; /&gt;</pre></div></div>

<p>Obrigado ao <a href="http://sergiolopes.name/" target="_blank">Sérgio Dinis Lopes</a> pela dica.</p>
<h3>favicon.ico pequeno e armazenável em cache</h3>
<p>O favicon.ico é uma pequena imagem que se encontra na raíz do servidor (normalmente).  É muitas vezes um problema porque mesmo não existindo o browser vai fazer um request à sua procura por isso é sempre bom ter uma para não se responder com um erro <a title="Descrição do Erro 404 Not Found" href="http://en.wikipedia.org/wiki/404_error" target="_blank">404 Not Found</a>.  Esta pequena imagem interfere também com a sequência de carregamento da página por exemplo no browser Internet Explorer enquanto que os scripts, css, imagens, etc são pedidos no onload event o favicon é pedido antes. <span style="text-decoration: underline;">Sugestões:</span></p>
<ul>
<li>Pequeno, de preferência com um máximo de ~1K (exemplos: wikipedia 318 bytes; google 1150 bytes; twitter 1406 bytes; wordpress 1150 bytes);</li>
<li>Defina o parâmetro Expires com um valor que ache mais correcto (4 meses é um valor aceitável tendo em conta que não se muda de favicon ferquentemente);</li>
</ul>
<h3>Escolher o Formato Correcto para as Imagens</h3>
<p>Existem vários formatos de imagens utilizados na construção de páginas web, entre elas destacam-se os formatos <a title="Mais Informações sobre o formato GIF" href="http://pt.wikipedia.org/wiki/Graphics_Interchange_Format" target="_blank">gif</a>, <a title="Mais Informações sobre o formato JPEG" href="http://www.w3.org/Graphics/JPEG/" target="_blank">jpeg</a>, <a title="Mais Informações sobre o formato PNG" href="http://www.w3.org/Graphics/PNG/" target="_blank">png</a> e é importante escolher para cada imagem qual o formato que melhor se lhe adequa fazendo com que imagens com menos pormenores, menos cores, etc. utilizem formatos mais leves (<a title="Página para ajudar na escolha dos Formatos de Imagem" href="http://www.yourhtmlsource.com/images/fileformats.html" target="_blank">ver mais informações aqui</a>).</p>
<h3>Leitura complementar:</h3>
<ul>
<li><a title="Image Optimization: Four Steps to File Size Reduction" href="http://yuiblog.com/blog/2008/11/14/imageopt-3/" target="_blank">Four Steps to File Size Reduction</a> por Stoyan Stefanov</li>
<li><a title="Image Optimization: Progressive JPEG…Hot or Not?" href="http://yuiblog.com/blog/2008/12/05/imageopt-4/" target="_blank">Progressive JPEG…Hot or Not?</a> por Stoyan Stefanov</li>
<li><a title="Host Images Files on Amazon S3 Storage" href="http://www.labnol.org/internet/host-images-files-on-amazon-s3-storage/" target="_blank">Alojar Imagens na Amazon</a> por Amit Agarwal</li>
</ul>
<h2>Server-Side</h2>
<p>Nos tempos de carregamento também interferem as acções do lado do servidor e por isso é necessário optimizar essas acções o máximo possível.</p>
<h3>Descarregar o buffer de saída mais cedo</h3>
<p>Quando uma página é pedida existe um intervalo de tempo em que o browser espera que o servidor junte o HTML e o envie para o browser. Durante este tempo o browser está inactivo à espera da resposta. A linguagem de programação <a title="PHP" href="http://www.php.net" target="_blank">PHP</a> tem uma função chamada <a title="PHP Função: Flush" href="http://pt2.php.net/manual/pt_BR/function.flush.php">flush</a> que permite que sejam enviadas respostas para o browser particionadas permitindo ao browser começar logo a carregar as informações recebidas enquanto o servidor continua a gerar o resto do HTML.</p>
<h3>Downloads em Paralelo</h3>
<p><span style="font-size: xx-small;">(imagens utilizadas neste subcapitulo retiradas <a title="Maximizing Parallel Downloads in the Carpool Lane" href="http://yuiblog.com/blog/2007/04/11/performance-research-part-4/" target="_blank">daqui</a>)</span></p>
<p style="text-align: left;">A especificação <a title="HTTP1/1" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.4" target="_blank">HTTP/1.1</a> sugere que os browsers façam apenas dois downloads em paralelo de cada dominio assim caso todos os componentes estejam no mesmo dominio só poderão ser feitos dois downloads de cada vez aumentando muito o tempo que uma página demora a carregar.</p>
<blockquote>
<p style="text-align: left;">Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy.</p>
</blockquote>
<p style="text-align: center;"><img class="size-medium wp-image-253 aligncenter" title="Dois Downloads em Paralelo" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/04/two_parallel-300x192.gif" alt="Dois Downloads em Paralelo" width="300" height="192" /></p>
<p>Neste exemplo, estão representados 10 componentes extra na nossa página que precisam de ser descarregados, então se criarmos subdominios conseguimos optimizar o download dos componentes colocando-os a ser descarregados em paralelo.  Apesar de se poderem adicionar quantos sub-dominios quiserem às páginas não se devem utilizar mais do que 2-4 dominios devido ao tempo que demora a fazer a correspondência nos DNS (hostname &lt;-&gt; IP) e esta demora, normalmente, entre 20 e 120 millisegundos, enquanto isto acontece o browser não descarrega nada do dominio em questão.  E então como resolver a situação? O HTML fica no main-domain http://joaopedropereira.com/ e podem ser criados entre dois e quatro sub-dominios para as imagens content1.joaopedropereira.com e content2.joaopedropereira.com e (sub-dominios apenas com fins ilustrativos). <img class="aligncenter size-medium wp-image-258" title="Four Parallel Downloads" src="http://joaopedropereira.com/blog/wp-content/uploads/2009/04/four_parallel-300x192.gif" alt="Four Parallel Downloads" width="300" height="192" /> Assim conseguimos optimizar o tempo de carregamento das imagens e scripts da página. Neste exemplo foi possível poupar algum tempo, quanto mais scripts e imagens existirem mais diferença se fará notar no tempo de carregamento da página.</p>
<h4>Leitura Complementar</h4>
<ul>
<li><a title="Maximizing Parallel Downloads" href="http://yuiblog.com/blog/2007/04/11/performance-research-part-4/" target="_blank">Maximizing Parallel Downloads</a></li>
<li><a title="Host Images Files on Amazon S3 Storage" href="http://www.labnol.org/internet/host-images-files-on-amazon-s3-storage/" target="_blank">Alojar Imagens na Amazon</a> por Amit Agarwal</li>
<li><a title="Optimize Parallel Downloads to Minimize Object Overhead" href="http://www.websiteoptimization.com/speed/tweak/parallel/" target="_blank">Optimize Parallel Downloads to Minimize Object Overhead</a></li>
</ul>
<h3>Utilizar o método GET ou POST em AJAX?</h3>
<p>Ao utilizar XMLHttpRequest, o método POST consiste em dois processos separados de envio de informações, primeiro envia os cabeçalhos e só depois envia a informação enquanto que o método GET envia a informação de uma só vez (excepto se existirem muitos cookies).  Existe também limite no envio de informações utilizando o método GET pois este não foi feito para enviar grandes quantidades de informações.  Tal como os nomes indicam o método GET foi desenhado para pedir informações ao servidor enquanto que o método POST foi desenhado para enviar informações para o servidor.  Então qual deles escolher?  Na verdade não existe um melhor, existem dois métodos diferentes para situações diferentes e o que é melhor em determinada situação pode não o ser numa outra situação diferente. Então é necessário avaliar cada caso e escolher qual o método mais apropriado.</p>
<h4>Leitura Complementar</h4>
<ul>
<li><a title="Ajax: Get or Post" href="http://javascript.about.com/od/ajax/a/ajaxgp.htm" target="_blank">Ajax: Get or Post</a> por Stephen Chapman</li>
</ul>
<h2>Quer saber mais?</h2>
<p>Existem mais maneiras de optimizar um website mas que podem ser mais complexas ou mais dispendiosas, mas vou aqui deixar links para quem quiser estudar mais sobre este tema.</p>
<ul>
<li><a title="High Performance Web Sites" href="http://oreilly.com/catalog/9780596529307/preview.html" target="_blank">High Performance Web Sites</a> por Steve Souders</li>
<li><a title="How To Optimize Your Site With GZIP Compression" href="http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/" target="_blank">How To Optimize Your Site With GZIP Compression</a></li>
</ul>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;n=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web&amp;pli=1" rel="nofollow" class="external" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;title=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;title=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;t=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web&amp;link=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/" rel="nofollow" class="external" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;title=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web&amp;srcUrl=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;srcTitle=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web&amp;snippet=Um%20aspecto%20muito%20importante%20que%20%C3%A9%20necess%C3%A1rio%20ter%20em%20conta%20aquando%20do%20desenvolvimento%20de%20p%C3%A1ginas%20web%20%C3%A9%20a%20acessibilidade%20de%20uma%20p%C3%A1gina%20e%20do%20tempo%20que%20a%20p%C3%A1gina%20demora%20a%20estar%20pronta%20para%20ser%20utilizada%2C%20pois%20caso%20o%20tempo%20de%20carregamento%20%28load%20time%29%20seja%20elevado%2C%20os%20visitantes%20n%C3%A3o%20v%C3%A3o%20gostar%20pode" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;title=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web&amp;summary=Um%20aspecto%20muito%20importante%20que%20%C3%A9%20necess%C3%A1rio%20ter%20em%20conta%20aquando%20do%20desenvolvimento%20de%20p%C3%A1ginas%20web%20%C3%A9%20a%20acessibilidade%20de%20uma%20p%C3%A1gina%20e%20do%20tempo%20que%20a%20p%C3%A1gina%20demora%20a%20estar%20pronta%20para%20ser%20utilizada%2C%20pois%20caso%20o%20tempo%20de%20carregamento%20%28load%20time%29%20seja%20elevado%2C%20os%20visitantes%20n%C3%A3o%20v%C3%A3o%20gostar%20pode&amp;source=The Blog of a WebDeveloper" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Diminuir%20Load%20Times%20no%20Carregamento%20de%20P%C3%A1ginas%20Web%22&amp;body=Link: http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A Um%20aspecto%20muito%20importante%20que%20%C3%A9%20necess%C3%A1rio%20ter%20em%20conta%20aquando%20do%20desenvolvimento%20de%20p%C3%A1ginas%20web%20%C3%A9%20a%20acessibilidade%20de%20uma%20p%C3%A1gina%20e%20do%20tempo%20que%20a%20p%C3%A1gina%20demora%20a%20estar%20pronta%20para%20ser%20utilizada%2C%20pois%20caso%20o%20tempo%20de%20carregamento%20%28load%20time%29%20seja%20elevado%2C%20os%20visitantes%20n%C3%A3o%20v%C3%A3o%20gostar%20pode" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;title=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web&amp;url=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-newsvine">
			<a href="http://www.newsvine.com/_tools/seed&amp;save?u=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;h=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web" rel="nofollow" class="external" title="Seed this on Newsvine">Seed this on Newsvine</a>
		</li>
		<li class="shr-orkut">
			<a href="http://promote.orkut.com/preview?nt=orkut.com&amp;tt=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web&amp;du=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;cn=Um%20aspecto%20muito%20importante%20que%20%C3%A9%20necess%C3%A1rio%20ter%20em%20conta%20aquando%20do%20desenvolvimento%20de%20p%C3%A1ginas%20web%20%C3%A9%20a%20acessibilidade%20de%20uma%20p%C3%A1gina%20e%20do%20tempo%20que%20a%20p%C3%A1gina%20demora%20a%20estar%20pronta%20para%20ser%20utilizada%2C%20pois%20caso%20o%20tempo%20de%20carregamento%20%28load%20time%29%20seja%20elevado%2C%20os%20visitantes%20n%C3%A3o%20v%C3%A3o%20gostar%20pode" rel="nofollow" class="external" title="Promote this on Orkut">Promote this on Orkut</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;title=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;title=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-sphinn">
			<a href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/" rel="nofollow" class="external" title="Sphinn this on Sphinn">Sphinn this on Sphinn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;title=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-techmeme">
			<a href="http://twitter.com/home/?status=Tip+@Techmeme+http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/+&quot;Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web&quot;&amp;source=shareaholic" rel="nofollow" class="external" title="Tip this to TechMeme">Tip this to TechMeme</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fjoaopedropereira.com%2Fblog%2F2009%2F04%2F03%2Foptimizacao-websites%2F&amp;t=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web" rel="nofollow" class="external" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web+-+http://bit.ly/dCcESN&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-yahoobuzz">
			<a href="http://buzz.yahoo.com/submit/?submitUrl=http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/&amp;submitHeadline=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web&amp;submitSummary=Um%20aspecto%20muito%20importante%20que%20%C3%A9%20necess%C3%A1rio%20ter%20em%20conta%20aquando%20do%20desenvolvimento%20de%20p%C3%A1ginas%20web%20%C3%A9%20a%20acessibilidade%20de%20uma%20p%C3%A1gina%20e%20do%20tempo%20que%20a%20p%C3%A1gina%20demora%20a%20estar%20pronta%20para%20ser%20utilizada%2C%20pois%20caso%20o%20tempo%20de%20carregamento%20%28load%20time%29%20seja%20elevado%2C%20os%20visitantes%20n%C3%A3o%20v%C3%A3o%20gostar%20pode&amp;submitCategory=science&amp;submitAssetType=text" rel="nofollow" class="external" title="Buzz up!">Buzz up!</a>
		</li>
		<li class="shr-yahoomail">
			<a href="http://compose.mail.yahoo.com/?Subject=Diminuir+Load+Times+no+Carregamento+de+P%C3%A1ginas+Web&amp;body=Link: http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A Um%20aspecto%20muito%20importante%20que%20%C3%A9%20necess%C3%A1rio%20ter%20em%20conta%20aquando%20do%20desenvolvimento%20de%20p%C3%A1ginas%20web%20%C3%A9%20a%20acessibilidade%20de%20uma%20p%C3%A1gina%20e%20do%20tempo%20que%20a%20p%C3%A1gina%20demora%20a%20estar%20pronta%20para%20ser%20utilizada%2C%20pois%20caso%20o%20tempo%20de%20carregamento%20%28load%20time%29%20seja%20elevado%2C%20os%20visitantes%20n%C3%A3o%20v%C3%A3o%20gostar%20pode" rel="nofollow" class="external" title="Email this via Yahoo! Mail">Email this via Yahoo! Mail</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
