Ottimizzazioni di IIS 7.5 per un sito che serve solo contenuto statico


21

Sto cercando di impostare un dominio privo di cookie destinato a servire contenuto statico per un'applicazione Web, simile al sito http://sstatic.net/ che utilizzano i siti di scambio di stack.

La mia domanda è: quali ottimizzazioni posso apportare alla mia configurazione di IIS 7.5 per un tale dominio? Ad esempio, non sarà mai responsabile per nient'altro che servire contenuti statici, quindi disabilitare l'integrazione ASP.NET sarebbe una buona mossa per questo sito?

Eventuali suggerimenti o riferimenti sulla configurazione di un sito simile con IIS 7.5 sarebbero i benvenuti.

modificare

Giusto per chiarire, questo non è il SOLO sito sul server, quindi le ottimizzazioni suggerite dovrebbero essere mirate al livello del sito e non alla configurazione a livello del server.

Risposte:


18

Ci sono diverse considerazioni in questo, alcune che sono gestite su IIS (compressione HTTP, intestazioni di cache fx) e alcune che sono gestite durante il processo di compilazione / prima della distribuzione (come la concatenazione di file Javascript e CSS e la minimizzazione degli spazi bianchi).

Come tale, è un po 'difficile darti una carrellata completa in una risposta, poiché alcuni dipenderà dai tuoi metodi di compilazione e rilascio. In passaggi di alto livello:

  • Il sito è "senza cucina" in virtù del tuo utilizzo di un nuovo dominio, che non è legato alla tua applicazione web. Dal momento che non stai impostando alcun cookie per il dominio (utilizzando il codice dell'applicazione fx .NET), è quindi "senza cookie".

  • Devi assolutamente abilitare la compressione HTTP per contenuti di testo statici come Javascript e CSS.

  • Non sono il massimo amministratore IIS, ma per quanto ne so, sono necessari solo i componenti IIS predefiniti associati al ruolo server "Web Server (IIS)" di base .

  • Dovresti assolutamente abilitare le lunghe intestazioni della cache per il contenuto statico . La raccomandazione generale è di 31 giorni, ma è possibile impostarla su un valore più alto o più basso. Ricorda, se offri contenuto statico con lunghe intestazioni della cache, devi cambiare l'URL se cambi il file, per evitare che i vecchi contenuti nella cache vengano riutilizzati dai client.

  • È necessario abilitare HTTP keep-alive (stessi documenti delle intestazioni della cache).

Oltre a questo, ci sono attività pre-implementazione, come lo spazio bianco che comprime Javascript e CSS , e idealmente comprime meglio PNG , ecc. Questo è dove gli strumenti di sviluppo e il ciclo di costruzione ti aiutano a decidere come procedere.

Al termine, prova a scaricare alcuni file dai tuoi server statici con YSlow abilitato . Trovo che il set di regole "Classic V2" dia il maggiore impatto per lo sforzo, quindi suggerirei di verificare il tuo punteggio con questo set di regole YSlow.

Del set di regole "Classic V2", queste regole si applicano in modo pulito alle istanze e al contenuto IIS del server statico:

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

Grazie per i tuoi commenti: mi sono già occupato delle considerazioni sulla pre-produzione che hai notato. Quello che sto veramente cercando è la grinta della configurazione di IIS. Dato che non c'è altro che contenuto statico, suppongo di poter rimuovere molte cose dalla pipeline http, ecc.
DanP

1
@DanP: non c'è davvero molto lavoro nell'impostazione di IIS. Microsoft sta diventando bravo a spedire configurazioni minime "sicure per impostazione predefinita". L'ottimizzazione delle prestazioni rimuovendo i componenti IIS che fanno parte del ruolo di base del server è l'ottimizzazione prematura di IMHO. Posso quasi garantire che il guadagno in termini di prestazioni non ne varrà la pena, poiché il servizio di file statici di solito ha un carico di server banalmente basso. Per le prestazioni degli utenti finali, la parte importante è ottenere la semantica HTTP corretta: memorizzazione nella cache delle intestazioni, compressione, keepalive, secondo i documenti sopra.
Jesper M,

Le impostazioni predefinite sono progettate per la pubblicazione di file statici: se si aggiunge semplicemente il ruolo del server Web, viene impostata una pipeline minima per la pubblicazione di file statici. Quindi, per ridurre al minimo la pipeline - non installare nient'altro!
TristanK,

@TristanK: Immagino che dovrei essere più specifico ... questo non è l'UNICO sito sul server IIS, quindi devo fare le mie ottimizzazioni a livello di sito, non a livello di server.
DanP

Sì, sono un po 'le informazioni chiave. Se hai deciso che questo è il percorso che hai scelto, immagino a) installane uno nuovo con cui confrontarlo, b) contrassegna tutti i moduli / gestori che desideri eliminare (che non fanno parte dell'installazione predefinita) con precondition = " AppPoolName! = StaticPool "(potrebbe contenere la sintassi al contrario). È praticamente tutto, includere / escludere moduli in un determinato pool di app.
TristanK,

9

C'è una scrittura molto interessante qui in cui qualcuno sta usando IIS per servire file statici. Si concentra principalmente sulla modifica delle impostazioni di memorizzazione nella cache dei file IIS per limitare l'attività del disco (che era il suo collo di bottiglia). Dice di aver visto un aumento di 20 volte delle prestazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.