Otimizações do IIS 7.5 para um site que serve apenas conteúdo estático

21

Estou procurando configurar um domínio sem cookies destinado a veicular conteúdo estático para um aplicativo da Web, semelhante ao site http://sstatic.net/ que os sites de troca de pilhas usam.

Minha pergunta é: que otimizações posso fazer na minha instalação do IIS 7.5 para esse domínio? Por exemplo, ele nunca será responsável por nada além de veicular conteúdo estático. Desabilitar a integração do ASP.NET seria uma boa jogada para este site?

Quaisquer sugestões ou referências sobre como configurar um site com o IIS 7.5 serão bem-vindas.

Editar

Apenas para esclarecer, este não é o site SOMENTE no servidor, portanto, as otimizações sugeridas devem ter como alvo o nível do site, e não a configuração no nível do servidor.

DanP
fonte

Respostas:

18

Existem várias considerações sobre isso, algumas tratadas no IIS (compactação HTTP, cabeçalhos de cache fx) e outras tratadas durante o processo de compilação / antes da implantação (como concatenação de arquivos Javascript e CSS e minificação de espaço em branco).

Como tal, é um pouco difícil fornecer um resumo completo em uma resposta, pois algumas delas dependem dos métodos de compilação e liberação. Em etapas de alto nível:

  • O site é "sem culinária" em virtude de você usar um novo domínio, que não está vinculado ao seu aplicativo da web. Como você não está configurando nenhum cookie para o domínio (usando o código do aplicativo .NET fx), é "sem cookies".

  • Você deve ativar absolutamente a compactação HTTP para conteúdo de texto estático , como Javascript e CSS.

  • Não sou o maior administrador do IIS, mas, pelo que sei, você só precisa dos componentes padrão do IIS associados à função básica do servidor "Servidor Web (IIS)" .

  • Você deve absolutamente habilitar cabeçalhos de cache longos para o conteúdo estático . A recomendação geral é de 31 dias, mas você pode configurá-la maior ou menor. Lembre-se, se você fornecer conteúdo estático com cabeçalhos de cache longos, deverá alterar o URL se alterar o arquivo, para evitar que o conteúdo antigo em cache seja reutilizado pelos clientes.

  • Você deve ativar o HTTP keep-alive (os mesmos documentos que os cabeçalhos de cache).

Além disso, existem tarefas de pré-implantação, como espaço em branco para compactar Javascript e CSS e , idealmente, compactar melhor os PNGs , etc. Essas são as ferramentas de desenvolvimento e o ciclo de construção que ajudam a decidir como proceder.

Quando terminar, tente baixar alguns arquivos de seus servidores estáticos com o YSlow ativado . Acho que o conjunto de regras "Classic V2" dá o maior impacto para o esforço, portanto, sugiro que verifique sua pontuação nesse conjunto de regras YSlow.

Do conjunto de regras "Classic V2", essas regras se aplicam perfeitamente às instâncias e ao conteúdo do IIS do servidor estático:

3. Add an Expires or a Cache-Control Header
4. Gzip Components
10. Minify JavaScript and CSS
11. Avoid Redirects
13. Configure ETags
19. Use Cookie-Free Domains for Components
22. Make favicon.ico Small and Cacheable
Jesper M
fonte
Obrigado por seus comentários: eu já cuidei das considerações de pré-produção que você anotou. O que realmente estou procurando é o âmago da questão da configuração do IIS. Desde que não há nada além de conteúdo estático, presumo eu posso remover um monte de coisas a partir do gasoduto http, etc.
danp
1
@ DanP: Realmente não há muito trabalho na configuração do IIS. A Microsoft está ficando boa no envio de configurações mínimas "seguras por padrão". A otimização do desempenho removendo os componentes do IIS que fazem parte da função básica do servidor é a otimização prematura do IMHO. Eu quase posso garantir que o ganho de desempenho não valerá a pena, pois a veiculação de arquivos estáticos geralmente tem carga de servidor trivialmente baixa. Para o desempenho do usuário final, a parte importante é obter a semântica HTTP correta - armazenando em cache os cabeçalhos, a compactação e a manutenção da atividade, conforme os documentos acima.
precisa
Os padrões são projetados para veiculação de arquivos estáticos - se você adicionar a função Servidor da Web, você estará configurado com um pipeline mínimo para veiculação de arquivos estáticos. Portanto, para minimizar o pipeline - não instale mais nada!
precisa saber é o seguinte
@TristanK: Acho que devo ser mais específico ... esse não é o site SOMENTE no servidor IIS, por isso preciso fazer minhas otimizações no nível do site, não no nível do servidor.
danp
Sim, essa é uma informação importante. Se você decidiu que esse é o caminho escolhido, eu acho: a) instale um novo para comparar, b) marque todos os módulos / manipuladores que você deseja remover (que não fazem parte da instalação padrão) com a pré-condição = " AppPoolName! = StaticPool "(pode ter a sintaxe para trás). É isso mesmo: incluir / excluir módulos em um determinado pool de aplicativos.
TristanK
9

uma gravação muito interessante aqui onde alguém está usando o IIS para servir arquivos estáticos. Ele se concentra principalmente em ajustar as configurações de cache de arquivos do IIS para limitar a atividade do disco (que era seu gargalo). Ele diz que viu um aumento de 20x no desempenho.

Até o riacho
fonte