{"version":"1.0","provider_name":"BrunoCunha.com","provider_url":"https:\/\/www.brunocunha.com\/blog","title":"Otimizando o tr\u00e1fego de dados do Site","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"Vj6RgQ26zr\"><a href=\"https:\/\/www.brunocunha.com\/blog\/tecnologia\/otimizando-o-trafego-de-dados-do-site\/\">Otimizando o tr\u00e1fego de dados do Site<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/www.brunocunha.com\/blog\/tecnologia\/otimizando-o-trafego-de-dados-do-site\/embed\/#?secret=Vj6RgQ26zr\" width=\"600\" height=\"338\" title=\"&#8220;Otimizando o tr\u00e1fego de dados do Site&#8221; &#8212; BrunoCunha.com\" data-secret=\"Vj6RgQ26zr\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script type=\"text\/javascript\">\n\/* <![CDATA[ *\/\n\/*! This file is auto-generated *\/\n!function(d,l){\"use strict\";l.querySelector&&d.addEventListener&&\"undefined\"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!\/[^a-zA-Z0-9]\/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),o=l.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),c=new RegExp(\"^https?:$\",\"i\"),i=0;i<o.length;i++)o[i].style.display=\"none\";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute(\"style\"),\"height\"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):\"link\"===t.message&&(r=new URL(s.getAttribute(\"src\")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener(\"message\",d.wp.receiveEmbedMessage,!1),l.addEventListener(\"DOMContentLoaded\",function(){for(var e,t,s=l.querySelectorAll(\"iframe.wp-embedded-content\"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute(\"data-secret\"))||(t=Math.random().toString(36).substring(2,12),e.src+=\"#?secret=\"+t,e.setAttribute(\"data-secret\",t)),e.contentWindow.postMessage({message:\"ready\",secret:t},\"*\")},!1)))}(window,document);\n\/\/# sourceURL=https:\/\/www.brunocunha.com\/blog\/wp-includes\/js\/wp-embed.min.js\n\/* ]]> *\/\n<\/script>\n","description":"Seu site j\u00e1 enfrentou o problema de sair do ar por ter atingido o limite de banda mensal do servi\u00e7o contratado? Pois ent\u00e3o, o meu no m\u00eas de janeiro\/2009 ultrapassou o limite de 5GB que o meu plano possui, com seus mais de 7000 visitantes \u00fanicos. Analisando o tr\u00e1fego HTTP do meu site percebi que esse limite foi alcan\u00e7ado simplesmente pelas p\u00e1ginas html, js, css e n\u00e3o por arquivos grande de MP3 ou v\u00eddeos que muitos sites disponibilizam. Pra resolver esse problema, pesquisei formas de otimizar o tr\u00e1fego HTTP. Algumas dicas podem ajudar a diminuir o consumo de banda e manter a taxa de visitas. O post Melhorando o tempo de carregamento de um site explica em detalhes algumas a\u00e7\u00f5es que podem ser tomadas para otimizar a banda como compactar arquivos externos com GZip, adicionar data de expira\u00e7\u00e3o no cabe\u00e7alho e outras que ajudam a diminuir o tamanho dos dados transferidos do servidor para o cliente. Aqui no BrunoCunha.com implementei basicamente a funcionalidade de compress\u00e3o das p\u00e1ginas com GZip e cache de arquivos Javascript, estilos CSS e imagens. Espero que isso d\u00ea um jeito. :) Outra dica \u00e9 o site http:\/\/checkgzipcompression.com\/\u00a0que testa se um site est\u00e1 com a funcionalidade de compress\u00e3o habilitada e o YUI Compressor que compacta arquivos JS e CSS removendo os espa\u00e7os e quebra de linhas. Muito legal esses sites. \u00c9 isso, espero que ajude a quem precisar, como parece ter me ajudado. Vou esperar esse m\u00eas de fev\/2009 passar pra ver se resolve. [Atualiza\u00e7\u00e3o | 27\/02\/2009 | Bruno Cunha] E pelo visto, funcionou muito bem. O m\u00eas de fevereiro est\u00e1 chegando ao fim, meu site ultrapassou os 8000 visitantes \u00fanicos e a banda total consumida at\u00e9 agora \u00e9 de 49%. Isso mesmo. Implementando essas dicas, consegui manter a quantidade de acesso ao site e economizar 50% de banda! Abaixo a configura\u00e7\u00e3o do arquivo .htaccess que utilizei no meu site: 1: GET POST&gt; 2: order deny,allow 3: deny from all 4: allow from all 5: &lt;\/Limit&gt; 6: PUT DELETE&gt; 7: order deny,allow 8: deny from all 9: &lt;\/Limit&gt; 10: FileETag None 11: &lt;IfModule mod_deflate.c&gt; 12: AddOutputFilterByType DEFLATE application\/x-javascript text\/css text\/js text\/javascript text\/html text\/plain text\/xml text\/php 13: &lt;IfModule mod_setenvif.c&gt; 14: # Netscape 4.x has some problems... 15: BrowserMatch ^Mozilla\/4 gzip-only-text\/html 16: # Netscape 4.06-4.08 have some more problems 17: BrowserMatch ^Mozilla\/4.0[678] no-gzip 18: # MSIE masquerades as Netscape, but it is fine 19: # BrowserMatch bMSIE !no-gzip !gzip-only-text\/html 20: # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48 21: # the above regex won't work. You can use the following 22: # workaround to get the desired effect: 23: BrowserMatch bMSI[E] !no-gzip !gzip-only-text\/html 24: # Don't compress images 25: SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary 26: &lt;\/IfModule&gt; 27: &lt;IfModule mod_headers.c&gt; 28: # Make sure proxies don't deliver the wrong content 29: Header append Vary User-Agent env=!dont-vary 30: &lt;\/IfModule&gt; 31: &lt;\/IfModule&gt; 32: 33: # Turn on Expires and set default to 0 34: ExpiresActive On 35: ExpiresDefault A0 36: # Set up caching on media files for 1 year (forever?) 37: &lt;FilesMatch \".(flv|ico|pdf|avi|mov|ppt|doc|mp3|mp4|wmv|wav)$\"&gt; 38: ExpiresDefault A29030400 39: Header append Cache-Control \"public\" 40: &lt;\/FilesMatch&gt; 41: # Set up caching on media files for 1 week 42: &lt;FilesMatch \".(gif|jpg|jpeg|png|swf)$\"&gt; 43: ExpiresDefault A604800 44: Header append Cache-Control \"public\" 45: &lt;\/FilesMatch&gt; 46: # Set up 4 Hour caching on commonly updated files 47: &lt;FilesMatch \".(xml|txt|html|js|css)$\"&gt; 48: ExpiresDefault A14400 49: Header append Cache-Control \"proxy-revalidate\" 50: &lt;\/FilesMatch&gt; 51: # Force no caching for dynamic files 52: &lt;FilesMatch \".(php|cgi|pl|htm)$\"&gt; 53: ExpiresActive Off 54: Header set Cache-Control \"private, no-cache, no-store, proxy-revalidate, no-transform\" 55: Header set Pragma \"no-cache\" 56: &lt;\/FilesMatch&gt;"}