Esse post foi pensado e criado após a implementação do novo site da Docs TI Brasil com o CMS WordPress [PHP+Mysql][/PHP+Mysql] no IIS 7 da plataforma Windows.Â
IIS [Internet Information Server][/Internet] e Apache são os servidores web mais utilizados nas hospedagens de sites de internet.
O IIS da Microsoft perdeu fôlego na disputa contra o Apache no momento que a plataforma Linux dominou o mercado web com soluções fáceis, seguras e gratuitas.
Com a disseminação do CMS WordPress/Joomla, o conjunto Apache+PHP+Mysql se tornou uma combinação perfeita para a criação de websites dinâmicos.
São vários blogs e fóruns discutindo as melhores maneiras de otimizar seus websites, usando os recursos do servidor Apache.
Contudo, o IIS 7 também suporta PHP+Mysql e poucas pessoas sabem que podemos utilizar o CMS WordPress na plataforma Windows.
A maioria dos usuários comuns procura um plano de hospedagem como o UOLHOST, LOCAWEB, GoDaddy, etc. A maior parte desses planos faz o acesso ao servidor através de um painel de controle, não acessando o servidor fÃsico e seu sistema operacional diretamente.
A plataforma Microsoft utiliza arquivos .config com formatação em XML para configurar aplicativos. Para fazer configurações no servidor sem precisar acessá-lo remotamente, utilizamos o arquivo web.config que é gerado na sua pasta raiz [seria o mesmo que o .htaccess do Apache][/seria], pelo IIS 7.
O exemplo abaixo é de um arquivo web.config mÃnimo:
1 2 3 4 5 6 | < ?xml version="1.0" encoding="utf-8" ?> <configuration> <system .web> </system> </configuration> |
Utilizando o PageSpeed/YSlow para visualizar os erros mais comuns encontrados nas páginas web, podemos fazer as seguintes alterações no IIS para otimizar seu website:
Definir arquivo default
1 2 3 4 5 6 | <defaultdocument> <files> <remove value="index.php"></remove> <add value="index.php"></add> </files> </defaultdocument> |
Negar acesso para solicitações HTTP, onde o comprimento do “Content-type” é maior do que 100 bytes
1 2 3 4 5 6 7 8 9 | <security> <requestfiltering> <requestlimits> <headerlimits> <add header="Content-type" sizeLimit="100"></add> </headerlimits> </requestlimits> </requestfiltering> </security> |
Ativar cache de saÃda para 1GB e de resposta para 512kb
1 | <caching enabled="true" enableKernelCache="true" maxCacheSize="1000" maxResponseSize="512000"></caching> |
Ativar o protocolo de compressão GZIP utilizando os tipos dinâmico e estático
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <httpcompression directory="%SystemDrive%inetpubtempIIS Temporary Compressed Files"> <scheme name="gzip" dll="%Windir%system32inetsrvgzip.dll"></scheme> <dynamictypes> <add mimeType="text/*" enabled="true"></add> <add mimeType="message/*" enabled="true"></add> <add mimeType="application/javascript" enabled="true"></add> <add mimeType="*/*" enabled="false"></add> </dynamictypes> <statictypes> <add mimeType="text/*" enabled="true"></add> <add mimeType="message/*" enabled="true"></add> <add mimeType="application/javascript" enabled="true"></add> <add mimeType="*/*" enabled="false"></add> </statictypes> </httpcompression> |
Ativar de forma simplificada a compressão, utilizando os tipos dinâmico e estático
1 | <urlcompression doStaticCompression="true" doDynamicCompression="true"></urlcompression> |
Definindo HTTP EXPIRES e MIME TYPES
1 2 3 4 5 | <staticcontent> <clientcache cacheControlMode="UseExpires" httpExpires="Sun, 31 Dec 2023 23:59:59 UTC"></clientcache> <remove fileExtension=".js"></remove> <mimemap fileExtension=".js" mimeType="text/javascript"></mimemap> </staticcontent> |
Eliminando ETag
1 2 3 4 5 6 7 8 9 10 11 12 13 | <httpprotocol> <customheaders> <add name="ETag" value="&quot;&quot;"></add> </customheaders> </httpprotocol> <rewrite> <outboundrules> <rule name="Remove ETag"> <match serverVariable="RESPONSE_ETag" pattern=".+"></match> <action type="Rewrite" value=""></action> </rule> </outboundrules> </rewrite> |
Redirecionar páginas de erro
1 2 3 4 5 6 7 8 9 10 | <httperrors> <remove statusCode="401" subStatusCode="-1"></remove> <remove statusCode="403" subStatusCode="-1"></remove> <remove statusCode="404" subStatusCode="-1"></remove> <remove statusCode="500" subStatusCode="-1"></remove> <error statusCode="401" path="https://www.dominio.com.br/401.htm" responseMode="Redirect"></error> <error statusCode="403" path="https://www.dominio.com.br/403.htm" responseMode="Redirect"></error> <error statusCode="404" path="https://www.dominio.com.br/404.htm" responseMode="Redirect"></error> <error statusCode="500" path="https://www.dominio.com.br/500.htm" responseMode="Redirect"></error> </httperrors> |
Com essas atualizações no web.config, seu website com certeza ficará mais rápido e otimizado para os mecanismos de busca, aumentando sua visibilidade.
Se você possuir um CDN, estas atualizações podem ocorrer automaticamente pelo DNS. O CloudFlare é uma ótima opção gratuita.
Caso tenham alguma sugestão para otimizar nosso web.config, envie seu comentário.