Cursos de Informática Grátis www.megainforcursos.com

30 de junho de 2012

Cache de navegador com htaccess


Cache de Navegador com .htaccess
Todo Webmaster sabe que é essencial realizar cache de navegador para os arquivos de um site por diversos motivos, entre eles economizar banda, acelerar o carregamento e principalmente, melhorar a experiência do usuário. Entretanto, as informações sobre este tema, ou até mesmo os guias oficiais são confusos, na maior parte em inglês, o que dificulta muito para os iniciantes. Pretendo neste guia abordar todas as maneiras de se realizar cache de navegador utilizando o arquivo de controle .htaccess do Apache.
Com a evolução da Internet, a tendência é que os sites passem a ser mais dinâmicos e ricos em conteúdo. A experiência do usuário nos últimos anos foi elevada a patamares inimagináveis, mas tudo tem o seu preço. Para se criar um site, é necessário o uso de diversos tipos de arquivos, como textos, imagens, mídias e etc. A partir do momento que o usuário acessa um site, é baixado para o navegador dele todos estes arquivos, e a cada novo acesso, tudo é novamente carregado, causando desperdício de banda e lentidão.

O que é Cache?
Antes de tecer comentários sobre o Apache, o arquivo de controle .htaccess e servidores, vamos entender o que é o Cache de navegador. A partir do momento que o usuário acessa o seu site, todo o conteúdo disponível, como imagens, estilos e etc é baixado para o seu computador, permanecendo em uma área temporária do disco rígido. A partir do primeiro acesso, podemos instruir o navegador a guardar estes arquivos anteriormente baixados em um local especial chamado Cache, assim como definir o tempo que ele ficará armazenado. Assim, quando o usuário acessar o seu site novamente ou navegar por outras páginas, ao invés de precisar baixar toda a página novamente, o seu navegador buscará os conteúdos diretamente do Cache, caso ele não tenha algo no Cache ou esteja expirado o tempo de permanência, ele solicita ao servidor do site.
É muito mais rápido buscar algo do Cache do que em um servidor web, que muitas vezes está em outro país.

Como funciona o acesso a um site?
Quando um site é acessado, ocorrem diversos pedidos pelo navegador, e respostas pelo servidor do site. Nestes pedidos, são enviados informações referente ao tipo de conteúdo, linguagem esperada, e etc. Isto é conhecido como Request Header ou Cabeçalho de Requisição. Após este pedido o servidor retorna a resposta, com as imagens, textos, estilos e etc. Este é o Response Header ou Cabeçalho de Resposta. Para um site comum, são enviados em média 80 Requests Headers, e recebidos consequentemente 80 Responses Headers. Para cada pedido uma resposta. Veja na imagem abaixo o acesso ao site do Google, no exemplo 1 pedido e 1 resposta:
Pedido ao site do Google (Request Header)
GET / HTTP/1.1
Host: www.google.com.br
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Resposta do servidor (Response Header)
HTTP/1.1 200 OK
Date: Sat, 21 Jan 2012 08:49:54 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip
Server: gws
Content-Length: 18390
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Notem que, o servidor do Google enviou a resposta OK para o pedido. Existem diversos tipos de respostas, isso você pode estudar aqui.
Quanto mais solicitações HTTP como essas ocorrerem em um acesso a um site, mais tempo vai levar para a página ser completamente carregada para o usuário. Por isso a necessidade do Cache, com ele, como já foi falado, é possível buscar o conteúdo na própria máquina do usuário, desde que este conteúdo já esteja armazenado em Cache. Diminuindo as requisições HTTP, aumentamos a velocidade de um site.

Cache de navegador com .htaccess
Módulos que precisam estar ativos no Apache: mod_expires e mod_headers
Após esta pequena introdução de como funciona o acesso a um site, vamos aprender como realizar um Cache eficiente no servidor Apache, utilizando o arquivo de controle .htaccess. A partir daqui, pressupôe-se que você tenha conhecimentos mínimos de desenvolvimento web, e que saiba criar e/ou manipular o arquivo .htaccess.
Existem duas formas de se realizar Cache com .htaccess:
  1. Cabeçalho Expires: Com o cabeçalho expires, é possível determinar a expiração de um arquivo, colocando-o assim em Cache. Ele deve ser utilizado para navegadores que utilizam o protocolo HTTP 1.0 para a comunicação com o servidor.
  2. Cabeçalho Cache-Control: Com o cabeçalho Cache-Control, é possível determinar a expiração de um arquivo, colocando-o assim em Cache. Além disso, é possível determinar vários parâmetros adicionais, como tornar o Cache público ou privado. Ele deve ser utilizado para navegadores que utilizam o protocolo HTTP 1.1 para a comunicação com o servidor.
A dúvida de muitos é sobre qual usar? O correto é usar os dois, definidos com os mesmos tempos de expiração, pois o navegador que trabalhar com o protocolo HTTP 1.0, utilizará o Expires, já os navegadores modernos que trabalharem com o HTTP 1.1, utilizará o Cache-Control.

Utilizando o Cache com Expires
Em seu arquivo .htaccess, vamos enviar ao navegador o cabeçalho expires. Atenção, se os módulos apache mod_expires e mod_headers estiverem desativados em seu hospedagem, irá ocorrer um erro 500 em seu servidor.
ExpiresActive On
Com isso, será ativo o Expires. Agora precisamos definir o tempo de cache para cada tipo de arquivo, ou para todos ao mesmo tempo:
ExpiresByType
Com o ExpiresByType, definimos o tipo de arquivo que receberá determinado tempo de expiração. O tempo de expiração pode ser informado em segundos, minutos, horas, dias, semanas, meses e anos, sempre respeitando as regras de sintaxe corretas.

No exemplo abaixo, vamos definir um tempo de Expires padrão (default) para todos os tipos de arquivos de 1 dia:
ExpiresActive On
ExpiresDefault "access plus 1 day"
No exemplo abaixo, vamos utilizar o ExpiresByType para definir um cache de 7 dias para imagens JPEG. Assim, quando o usuário acessar o site pela primeira vez, ele receberá a imagem em seu navegador com a instrução de cache. Nos próximos 7 dias, caso ele acesse novamente o site, ele receberá a imagem em cache do seu próprio navegador.
ExpiresActive On
ExpiresByType image/jpeg "access plus 7 days"
Outros exemplos de utilização:
ExpiresActive On
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"
 
# Feed RSS - 1 hora
ExpiresByType application/rss+xml "access plus 1 hour"
 
# Favicon - 1 semana
ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
 
# Imagens, vídeo, audio - 1 semana
ExpiresByType image/gif "access plus 1 week"
ExpiresByType image/png "access plus 1 week"
ExpiresByType image/jpg "access plus 1 week"
ExpiresByType image/jpeg "access plus 1 week"
 
ExpiresByType video/ogg "access plus 1 week"
ExpiresByType audio/ogg "access plus 1 week"
ExpiresByType video/mp4 "access plus 1 week"
ExpiresByType video/webm "access plus 1 week"
 
# Webfonts - 1 ano
ExpiresByType font/truetype "access plus 1 year"
ExpiresByType font/opentype "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
 
# CSS / jScript - 5 dias e 2 horas
ExpiresByType text/css "access plus 5 days 2 hours"
ExpiresByType application/javascript "access plus 5 days 2 hours"
ExpiresByType text/javascript "access plus 5 days 2 hours"
Você pode também aplicar / desativar o Expires em arquivos específicos, com a função FilesMatch (Expressão Regular):
# Expires somente no arquivo estilo.css, formato GMT
"estilo\.css$">
Header set Expires "Thu, 15 Apr 2012 20:00:00 GMT"
 
# Desativar Expires somente no arquivo index.html
"estilo\.css$">
Header unset Expires
O único problema de se utilizar Expires para arquivos específicos é que seria necessário estar sempre alterando o tempo de Expiração no código, visto que não é feito um “plus” automático como no Exemplo anterior.

Utilizando o Cache com Cache-Control
A função do Cache-Control é exatamente a mesma do Expires, determinar o tempo de expiração (somente sem segundos) para qualquer tipo de arquivo, e ainda, determinar o tipo do cache, se ele será público e etc. Apenas navegadores modernos reconhecem o cabeçalho Cache-Control.
O Cache-Control pode receber 7 informações (separadas por vírgula):
  • Max-Age: A informação mais importante. Com ela, definimos em segundos o tempo de expiração;
  • Tipo de Cache:
  • Public: O conteúdo do cache estará disponível para todos os usuários que utilizarem um mesmo navegador (em alguns navegadores é possível utilizar vários usuários). Sempre use o Tipo de Cache Public quando for utilizar em sites com SSL (HTTPS), pois existem alguns conflitos ao utilizar outros tipos, relacionados à cache e servidores proxys ;
  • Private (default): O conteúdo do cache estará disponível apenas para o usuário específico;
  • No-Cache: Não é armazenado em Cache;
  • No-Store: O Cache é feito de forma temporária, não é armazenado;
  • Must-Revalidate: Seguir rigorosamente as minhas regras de cache;
  • Proxy-Revalidate: O mesmo do anterior, só que válido para proxys;
No exemplo abaixo, vamos definir um Cache-Control para imagens com tempo de 4 horas
# Cache-Control de 4 horas (14400 segundos) de tipo público
"\.(jpg|jpeg|png|gif|ico)$">
Header set Cache-Control "max-age=14400, public"
Podemos fazer usando somente as extensões dos arquivos como no exemplo acima, ou declarando o nome do arquivo individual (ou os nomes dos arquivos, se for mais de um):
# Cache-Control de 4 horas (14400 segundos) de tipo público
"(estilo\.css|imagem\.jpg)$">
Header set Cache-Control "max-age=14400, public"
Caso queira desativar o cache para certos tipos de arquivos, ou certas extensões:
# Desativar cache para o arquivo index.php
# O cabeçalho "pragma" é para compatibilidade com o IE
"index\.php$">
ExpiresActive Off
Header set Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate"
Header set Pragma "no-cache"

Validadores de Cache

A fim de melhorar a performance do Cache, foram implementados os validadores de Cache. A idéia é, atualizar o cache quando o arquivo no servidor for atualizado. A princípio a idéia é ótima e todos deveriam usar os validadores, mas ao usá-los, sempre que alguém atualizar a página (F5), são enviados vários pedidos adicionais ao servidor para ver se o arquivo mudou, e isso pode ocasionar mais lentidão no acesso.

Como funciona?
Ao usar os validadores de cache, sempre que o tempo de expiração acabar ou o usuário atualizar a página (F5), o navegador irá perguntar ao servidor se o arquivo mudou (enviando o cabeçalho If-Modified-since se você usar o Last-Modified ou If-None-Match se você usar o E-Tag). O servidor então, verifica se o arquivo do servidor foi modificado ou atualizado, se sim, ele envia o arquivo com a resposta “200 OK”, caso contrário, ele retorna a resposta “304 Not Modified”.
Vantagem de usar os validadores de cache
O cache será atualizado sempre que o arquivo no servidor mudar, e o usuário atualizar a página.
Desvantagem de usar os validadores de cache
O navegador fará mais pedidos HTTP GET ao servidor, e consequentemente receberá as respostas 200 ou 304 caso não mudou. Isso causará um maior consumo de trafégo do servidor, e um pouco mais de lentidão no acesso. Ao desabilitar os validadores, o navegador confiará cegamente no tempo de expiração definido em Expires e Cache-Control.
Um outro problema com as E-Tags é que elas são construídas usando atributos que as tornam únicas para um servidor específico. A E-Tag não vai corresponder quando um navegador recebe o componente original de um servidor e depois tenta validar esse componente em um servidor diferente, uma situação que é muito comum em sites da Web que usam clusters ou nodes de servidores para lidar com solicitações.
Eu Lucas Peperaio particularmente não gosto de usar estes validadores, que apesar de serem úteis no ponto de manter o cache atualizado quando a página é recarregada, causa mais lentidão de acesso e um maior consumo de banda. Em meus projetos, eu prefiro removê-los, fazendo o navegador confiar cegamente no Expires / Cache-Control:
Header unset Etag
FileETag None
Header unset Last-Modified
Caso você não esteja usando os validadores e queira usar, faça assim:
FileEtag Mtime size
#O last-modified irá aparecer por padrão

Dicas de uso
  • Só use os validadores de cache (Last-Modified ou E-Tag) se você NÃO estiver usando o Expires e o Cache-Control.
  • Nos testes que você for fazendo no .htaccess, eu recomendo que você desligue o gerenciamento de cache do seu navegador no menu de opções (consulte o manual do navegador) ou, sempre que for necessário, limpe o cache para testar as alterações.
  • Se for usar o validador de cache, não use os dois. Desabilite o E-tag ou o Last-Modified, para evitar redundância.
  • Se você utilizar o Firefox ou o Chrome, instale a extensão Firebug para monitorar se os arquivos estão ficando em cache corretamente. No painel “rede” do firebug, todos os arquivos em cache ficam da cor cinza claro.
  • Bem, acredito que este é o maior guia de cache brasileiro, eu pelo menos não encontrei nenhum tão completo e em português como este, por isto decidi escrever. Espero que vocês desenvolvedores WEB, após este texto, tenham aprendido as melhores formas de implementar cache de navegador. Num próximo artigo em mostro como implementar cache com diversos servidores.
    Fontes:
    http://gtmetrix.com/leverage-proxy-caching.html
    http://gtmetrix.com/leverage-browser-caching.html
    http://www.askapache.com/htaccess/apache-speed-expires.html
    http://httpd.apache.org/docs/2.0/mod/mod_expires.html
    http://www.mnot.net/cache_docs/
    http://homepages.dcc.ufmg.br/~joaoreis/Site%20de%20tutoriais/cdtc/cod-http.html
    http://imasters.com.br/artigo/20286/redes-e-servidores/htaccess-direto-ao-ponto
    http://developer.yahoo.com/performance/rules.html

Utilidades do arquivo .htaccess


Quem possue um site hospedado em plataforma linux, certamente já mexeu ou pelo menos ouviu falar do apache. O .htaccess é um arquivo de controle do apache, cujas as funções são: redicionar URLs, bloquear diretórios com senhas, criar erros personalizados como o erro 404, escolher se o site acessa sem o com o www  e etc. Veja aqui funções importantes deste arquivo, e aprenda a dominá-loO .htaccess é um arquivo sem nome, ou seja, ele possue apenas extensão. Para criar as regras abaixo, abra o bloco de notas ou similar, salve como “todos os arquivos” com o nome .htaccess.

Ocultando o index da URL

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.html\ HTTP/
RewriteRule ^(([^/]+/)*)index\.html$ http://www.seusite.com.br/$1 [R=301,L]
#obs, se o seu site é feito em php, substitua os "html" pelo mesmo

Protegendo o seu site contra cópia ou uso indevido de arquivos (como scripts php, js, css, imagens)

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://seusite.com.br/.*$ [NC]  #este site está liberado a usar (o seu site no caso)
RewriteCond %{HTTP_REFERER} !^http://www.seusite.com.br/.*$ [NC]  #este site está liberado a usar
RewriteCond %{HTTP_REFERER} !^http://www.google.com.br/.*$ [NC]  #liberar o google para usar as suas imagens
RewriteRule .*\.(jpg|jpeg|gif|png|bmp|php|js|swf)$ – [F,NC]
#Neste caso, se alguém que não está na lista acima tentar usar as suas imagens direto do seu site ou usar os seus scripts, mostrará uma tela com erro e as imagens não serão mostradas.

Bloquear o arquivo .htaccess contra acesso pela URL


  deny from all

Bloqueando arquivos específicos contra acesso pela URL


  order allow,deny
  deny from all

Sempre colocar “www” na URL

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(seusite\.com\.br)(:80)? [NC]
RewriteRule ^(.*) http://www.seusite.com.br/$1 [R=301,L]
order deny,allow

Comprimir arquivos do site para consumir menos banda

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html

Criando páginas de erros personalizadas

ErrorDocument 400 /sua-pagina-erro-400
ErrorDocument 404 /página-de-erro-404
ErrorDocument 500 /página-para-erro-500
#obs saiba mais sobre como criar páginas de erros personalizadas

Alterar a página inicial (padrão) do site

DirecttoryIndex minhaoutrapagina.html

Redirecionamento 301 com htaccess

Redirect 301 /página-a-ser-movida  http://www.seusite.com.br/pagina-movida-para-ca

Bloquear listagem de diretórios

Options -Indexes

Forçar o uso de SSL

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://seu-site.com.br/$1 [R,L]

Desabilitar case sensitive

CheckSpelling On
#agora a url PAGINA.HTML é igualmente acessada por pagina.html

Restringindo o acesso por IP

Order allow,deny
allow from 192.168.0.
deny from all
 # Deixa a somente a INTRANET acessar
Order deny,allow
deny from 192.168.0.25
allow from all
# Deixa todo mundo acessar, menos o IP 192.168.0.25
Order deny, allow
deny from all
#bloquear geral

Redirecionar acesso de um site para outro lugar

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?bloqueado.com.br.*$ [NC]
RewriteRule .* http://www.antispam.br [R,L]
#Se o site "bloqueado" mandar algum visitante para aqui, é redirecionado para o "antispam"

Expressões regulares

#todos os arquivos de uma página serão redirecionados para outra
RewriteEngine on
RewriteRule ^pagina-antiga/(.*) http://www.novosite.com.br/pagina-antiga/$1
#redirecionar somente os arquivos terminados em php
RewriteEngine om
RewriteRule ^pagina-antiga/(.*)\.php http://www.novosite.com.br/pagina-antiga/$1.php
#redirecionar tudo de um site para outro
RedirectMatch permanent /(.*) http://www.novosite.com/$1

Retirar extensões da URL

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
#neste caso, estou retirando apenas o HTML

Forçar o uso do Charset UTF-8 para arquivos


  AddDefaultCharset UTF-8

Cache de navegador – Definir tempo de expiração (segundos)

   
ExpiresActive On   
ExpiresDefault "access plus 1 seconds"   
ExpiresByType text/html "access plus 1 seconds"   
ExpiresByType image/gif "access plus 2592000 seconds"   
ExpiresByType image/jpeg "access plus 2592000 seconds"   
ExpiresByType image/png "access plus 2592000 seconds"   
ExpiresByType text/css "access plus 604800 seconds"   
ExpiresByType text/javascript "access plus 216000 seconds"   
ExpiresByType application/x-javascript "access plus 216000 seconds" 
 

Cache de navegador – Definir controle de cache (segundos)

   
     
Header set Cache-Control "max-age=2592000, public"   
   
     
Header set Cache-Control "max-age=604800, public"   
   
     
Header set Cache-Control "max-age=216000, private"   
   
     
Header set Cache-Control "max-age=216000, public, must-revalidate"   
   
     
Header set Cache-Control "max-age=1, private, must-revalidate"   
 #desligar cache em arquivos php/html/htm  

Cache de navegador – Forçar o uso do cache, desabilitando o ETag

   
Header unset ETag 
 
FileETag None 

Adicionar novos mimetypes

AddType application/x-endnote-connection enz AddType application/x-endnote-filter enf AddType application/x-spss-savefile sav 

Desabilitar execução de certos Scripts

Options -ExecCGI
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi

Alterar a linguagem Padrão

DefaultLanguage en-US

Alterar fuso horário padrão

SetEnv TZ America/Indianapolis

Forçar download de certos arquivos

AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

Bloquear requisição baseado no user-agent

SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT

Só lembrando que esses códigos não são inseridos em tags pelo painel de controle, e sim pelo FTP da hospedagem. Caso você não tenha acesso FTP ao seu site, você não conseguirá sequer criar um arquivo .htaccess
Eu vou postando novas utilidades conforme a necessidade. Atualizado última vez 21/09/2011
Lucas Peperaio

29 de junho de 2012

Baixar o 3d studio max 2010 x32 completo



Crie modelos 3D impressionantes em menos tempo com o software Autodesk® 3ds Max® 2010. Essa solução de modelagem, animação e renderização 3D repleta de recursos é usada para a produção dos jogos mais vendidos e de premiados filmes e conteúdo de vídeo. Trata-se da ferramenta recomendada para a rápida geração de personagens realísticos, efeitos de computação gráfica perfeitos, jogos de cair o queixo ou filmes e conteúdo de televisão de qualidade superior. O aprimorado conjunto de ferramentas permite que você crie seu ambiente 3D como quiser, além de possibilitar o gerenciamento de cenas complexas e tirar proveito da melhor interoperabilidade de softwares e do maior suporte para integração em canais.

Os líderes nas indústrias de desenvolvimento de jogos, televisão, filmes e editoração digital desejarão explorar essa versão mais recente do melhor software de modelagem 3D disponível no mercado.

O que pode ser feito nesse magnífico software:




Tamanho: 717MB
Idioma: Inglês


Como instalar:

Este programa como a maioria dos softwares de designer exige um serial, portanto você deve possuir o produto original com o serial no interior da caixa, mas como você e eu sempre damos um jeitinho brasileiro de rodear isso você pode fazer o seguinte:

Ø Baixe o arquivo.

Ø Abra o arquivo

Ø Inicie o extrator 

Ø Aguarde 

Ø Inicie a extração

Ø Clique em "install products" 

Ø Clique em "next" e aguarde

Ø Clique em 

Ø Coloque o serial

Ø Clique em "install"

Ø 

Ø Clique em finish.

caso queira o programa completo você pode baixar ele em torrent
pelo pirata bay. ok abraços

 
Design by Wordpress Theme | Bloggerized by Free Blogger Templates | coupon codes