Schema di schema <>

Panoramica

L'elemento <scheme> dell'elemento <httpCompression> specifica le impostazioni seguenti per gli schemi di compressione GNU zip (Gzip) e Deflate in Internet Information Services (IIS) 7:

  • I nomi e gli attributi dll specificano rispettivamente il nome e la DLL del provider di uno schema di compressione. IIS 7 supporta la compressione Gzip e Deflate e entrambi gli schemi di compressione sono attualmente implementati in %windir%\system32\inetsrv\gzip.dll.

  • L'attributo doStaticCompression specifica se la compressione statica è abilitata per lo schema di compressione specificato dall'attributo name . L'impostazione di doStaticCompression su true specifica che il contenuto statico verrà compresso quando richiesto da un client. Se la compressione statica è abilitata, ogni richiesta di contenuto statico contenente l'intestazione "Accept-Encoding: gzip" o "Accept-Encoding: deflate" causa la compressione del contenuto, purché lo schema di compressione specificato nell'intestazione sia abilitato in IIS. Se la richiesta non contiene questa intestazione o l'intestazione specifica uno schema di compressione non abilitato in IIS, il contenuto non viene compresso.

    Se IIS determina che la risposta deve essere compressa, IIS controlla la directory di compressione specificata dall'attributo directory dell'elemento <httpCompression> . Se una versione aggiornata del file statico viene trovata nella directory, viene inviata al browser client. Se non viene trovata una versione aggiornata e compressa del file e la compressione su richiesta è abilitata con l'attributo dynamicCompressionBeforeCache dell'elemento <urlCompression> , IIS invia il file richiesto in formato non compresso e aggiunge tale file alla coda di compressione in background.

  • L'attributo doDynamicCompression specifica se la compressione dinamica è abilitata per lo schema di compressione specificato dall'attributo name . L'impostazione di doDynamicCompression su true specifica che il contenuto dinamico verrà compresso quando richiesto da un client. Se la compressione dinamica è abilitata, ogni richiesta per il contenuto dinamico contenente l'intestazione "Accept-Encoding: gzip" o "Accept-Encoding: deflate" causa la compressione del contenuto, purché lo schema di compressione specificato nell'intestazione sia abilitato in IIS. Se la richiesta non contiene questa intestazione o l'intestazione specifica uno schema di compressione non abilitato in IIS, il contenuto non viene compresso.

    Nota

    Poiché il contenuto dinamico è sempre in fase di modifica, IIS non memorizza nella cache le versioni compresse del contenuto dinamico. La compressione dinamica consuma un notevole tempo di CPU e risorse di memoria e deve essere usata solo nei server con connessioni di rete lente e tempo di CPU da risparmiare.

  • Gli attributi dynamicCompressionLevel e staticCompressionLevel specificano i livelli di compressione per gli schemi di compressione quando IIS comprime rispettivamente il contenuto dinamico o statico. I livelli di compressione inferiori producono file compressi leggermente più grandi, ma con un impatto complessivo inferiore sulle risorse cpu e memoria. I livelli di compressione più elevati generano in genere file compressi più piccoli, ma con un utilizzo maggiore della CPU e della memoria.

Nota

Per impostazione predefinita, solo lo schema di compressione Gzip è disponibile in IIS 7. Per abilitare lo schema di compressione deflate a livello di codice , vedere la sezione Esempi di codice di questo documento.

Compatibilità

Versione Note
IIS 10.0 L'elemento <scheme> non è stato modificato in IIS 10.0.
IIS 8,5 L'elemento <scheme> non è stato modificato in IIS 8.5.
IIS 8,0 L'elemento <scheme> non è stato modificato in IIS 8.0.
IIS 7,5 L'elemento <scheme> non è stato modificato in IIS 7.5.
IIS 7.0 L'elemento <scheme> dell'elemento <httpCompression> è stato introdotto in IIS 7.0.
IIS 6.0 L'elemento <scheme> sostituisce le proprietà metabase di IIS 6.0 seguenti:
  • HcCompressionDll
  • HcDoDynamicCompression
  • HcDoStaticCompression
  • HcDynamicCompressionLevel

Installazione

La compressione HTTP è in genere disponibile nell'installazione predefinita di IIS 7 e versioni successive. Tuttavia, solo la compressione statica viene installata per impostazione predefinita. Per installare la compressione statica o dinamica, seguire questa procedura.

Windows Server 2012 o Windows Server 2012 R2

  1. Sulla barra delle applicazioni fare clic su Server Manager.
  2. In Server Manager fare clic sul menu Gestisci e quindi su Aggiungi ruoli e funzionalità.
  3. Nella procedura guidata Aggiungi ruoli e funzionalità fare clic su Avanti. Selezionare il tipo di installazione e fare clic su Avanti. Selezionare il server di destinazione e fare clic su Avanti.
  4. Nella pagina Ruoli server espandere Server Web (IIS), espandere Server Web, espandere Prestazioni e quindi selezionare Compressione contenuto statico e/o Compressione contenuto dinamico. Fare clic su Avanti.
    Screenshot del riquadro Prestazioni espanso con Compressione contenuto statico selezionata e Compressione contenuto dinamica evidenziata.
  5. Nella pagina Selezione funzionalità fare clic su Avanti.
  6. Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
  7. Nella pagina Risultati fare clic su Chiudi.

Windows 8 o Windows 8.1

  1. Nella schermata Start spostare il puntatore nell'angolo inferiore sinistro, fare clic con il pulsante destro del mouse sul pulsante Start e quindi fare clic su Pannello di controllo.
  2. In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva le funzionalità di Windows.
  3. Espandere Internet Information Services, espandere Servizi Web a livello mondiale, espandere Funzionalità prestazioni e quindi selezionare Compressione dinamica contenuto e/o Compressione contenuto statico.
    Screenshot che mostra il riquadro Funzionalità prestazioni in Attivare o disattivare le funzionalità di Windows nella pagina espansa e Compressione contenuto statica evidenziata.
  4. Fare clic su OK.
  5. Fare clic su Close.

Windows Server 2008 o Windows Server 2008 R2

  1. Nella barra delle applicazioni fare clic su Start, scegliere Strumenti di amministrazione e quindi fare clic su Server Manager.
  2. Nel riquadro della gerarchia di Server Manager espandere Ruoli e quindi fare clic su Server Web (IIS).
  3. Nel riquadro Server Web (IIS) scorrere fino alla sezione Servizi ruolo e quindi fare clic su Aggiungi servizi ruolo.
  4. Nella pagina Seleziona servizi ruolo della Procedura guidata Aggiungi servizi ruolo selezionare Compressione contenuto dinamico se si vuole installare la compressione dinamica e la compressione del contenuto statico se si vuole installare la compressione statica e quindi fare clic su Avanti.
    Screenshot che mostra la pagina Seleziona servizi ruolo con nodo Prestazioni espanso e Compressione contenuto dinamico evidenziata.
  5. Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
  6. Nella pagina Risultati fare clic su Chiudi.

Windows Vista o Windows 7

  1. Nella barra delle applicazioni fare clic su Start e quindi fare clic su Pannello di controllo.
  2. In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva funzionalità di Windows.
  3. Espandere Internet Information Services, quindi Servizi Web a livello mondiale, quindi Funzionalità prestazioni.
  4. Selezionare Http Compression Dynamic se si vuole installare la compressione dinamica e la compressione statica del contenuto se si vuole installare la compressione statica.
    Screenshot della pagina Disattiva o disattiva funzionalità di Windows che mostra il nodo Funzionalità prestazioni espanse e H T T P Common Dynamics selezionato.
  5. Fare clic su OK.

Procedure

Non esiste un'interfaccia utente per impostare lo schema di compressione per IIS 7. Per esempi di come impostare lo schema di compressione a livello di codice, vedere la sezione Esempi di codice di questo documento.

Configurazione

Attributi

Attributo Descrizione
dll Attributo stringa obbligatorio.

Specifica il percorso completo del file system e il nome file della DLL di compressione associata allo schema di compressione. Il servizio World Wide Web Publishing Service (WWW service) deve essere riavviato prima di apportare modifiche a questo attributo.
doDynamicCompression Attributo booleano facoltativo.

Specifica se le risposte alle richieste per il contenuto dinamico, ad esempio gli script nelle estensioni ASP (Active Server Pages) e ISAPI, vengono compressi. Se questo valore viene modificato a livello di schema di compressione individuale, il servizio WWW deve essere riavviato prima dell'effetto della modifica.

Il valore predefinito è true.
doStaticCompression Attributo booleano facoltativo.

Specifica se IIS comprime le risposte alle richieste per il contenuto statico. Poiché questo attributo non può essere ereditato, deve essere impostato su true sia a livello globale (<httpCompression>) che a livello di schema singolo se l'attributo name è impostato su Gzip. Se questo valore viene modificato a livello di singolo schema di compressione, il servizio WWW deve essere riavviato prima che la modifica venga applicata.

Nota: L'archivio di compressione statico deve trovarsi in una partizione del disco o in una condivisione remota formattata con NTFS. Se l'archivio file non è NTFS, la compressione statica è disabilitata. Per motivi di sicurezza, non verranno gestite risposte compresse da un archivio cache FAT.

Il valore predefinito è true.
dynamicCompressionLevel Attributo uint facoltativo.

Specifica il livello di compressione per lo schema di compressione quando il contenuto dinamico viene compresso. I livelli variano da 0 (livello di compressione più basso e utilizzo minimo della CPU) a 10 (livello di compressione più alto e utilizzo più elevato della CPU). Il servizio WWW deve essere riavviato prima che tutte le modifiche apportate a questo attributo siano effettive.

Nota: Poiché la compressione dinamica utilizza notevoli risorse di memoria e tempo di CPU, usarla solo nei server con connessioni di rete lente e tempo di CPU da risparmiare. Le risposte statiche compresse possono essere memorizzate nella cache e, pertanto, non influiscono sulle risorse della CPU come le risposte dinamiche.

Il valore predefinito è 0.
name Attributo stringa obbligatorio.

Specifica il nome dello schema di compressione. Ad esempio, Gzip o Deflate.
staticCompressionLevel Attributo uint facoltativo.

Specifica il livello di compressione per lo schema di compressione quando il contenuto statico viene compresso. I livelli variano da 0 (livello di compressione più basso e utilizzo minimo della CPU) a 10 (livello di compressione più alto e utilizzo più elevato della CPU). 0 significa che la compressione è disabilitata. Il servizio WWW deve essere riavviato prima che tutte le modifiche apportate a questo attributo siano effettive.

Il valore predefinito è 7.

Elementi figlio

Elemento Descrizione
remove Elemento facoltativo.

Rimuove un riferimento a uno schema di compressione HTTP dalla raccolta dello schema di compressione HTTP.
clear Elemento facoltativo.

Rimuove tutti i riferimenti agli schemi di compressione HTTP dalla raccolta di schemi di compressione HTTP.

Esempio di configurazione

L'elemento predefinito <httpCompression> seguente viene configurato nel file ApplicationHost.config in IIS 7. Questa sezione di configurazione eredita le impostazioni di configurazione predefinite, a meno che non si usi l'elemento <clear> .

<httpCompression
      directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
   <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
   <dynamicTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
   </dynamicTypes>
   <staticTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
   </staticTypes>
</httpCompression>

Codice di esempio

Gli esempi di codice seguenti aggiungono lo schema di compressione deflate a IIS 7.

AppCmd.exe

appcmd.exe set config -section:system.webServer/httpCompression /+"[name='deflate',doStaticCompression='True',doDynamicCompression='True',dll='%Windir%\system32\inetsrv\gzip.dll']" /commit:apphost

Nota

È necessario assicurarsi di impostare il parametro commit su apphost quando si usa AppCmd.exe per configurare queste impostazioni. In questo modo le impostazioni di configurazione vengono confermate nella sezione relativa al percorso appropriato nel file ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection httpCompressionSection = config.GetSection("system.webServer/httpCompression");
         ConfigurationElementCollection httpCompressionCollection = httpCompressionSection.GetCollection();

         ConfigurationElement schemeElement = httpCompressionCollection.CreateElement("scheme");
         schemeElement["name"] = @"deflate";
         schemeElement["doStaticCompression"] = true;
         schemeElement["doDynamicCompression"] = true;
         schemeElement["dll"] = @"%Windir%\system32\inetsrv\gzip.dll";
         httpCompressionCollection.Add(schemeElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim httpCompressionSection As ConfigurationSection = config.GetSection("system.webServer/httpCompression")
      Dim httpCompressionCollection As ConfigurationElementCollection = httpCompressionSection.GetCollection

      Dim schemeElement As ConfigurationElement = httpCompressionCollection.CreateElement("scheme")
      schemeElement("name") = "deflate"
      schemeElement("doStaticCompression") = True
      schemeElement("doDynamicCompression") = True
      schemeElement("dll") = "%Windir%\system32\inetsrv\gzip.dll"
      httpCompressionCollection.Add(schemeElement)

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST");
var httpCompressionCollection = httpCompressionSection.Collection;

var schemeElement = httpCompressionCollection.CreateNewElement("scheme");
schemeElement.Properties.Item("name").Value = "deflate";
schemeElement.Properties.Item("doStaticCompression").Value = true;
schemeElement.Properties.Item("doDynamicCompression").Value = true;
schemeElement.Properties.Item("dll").Value = "%Windir%\\system32\\inetsrv\\gzip.dll";
httpCompressionCollection.AddElement(schemeElement);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST")
Set httpCompressionCollection = httpCompressionSection.Collection

Set schemeElement = httpCompressionCollection.CreateNewElement("scheme")
schemeElement.Properties.Item("name").Value = "deflate"
schemeElement.Properties.Item("doStaticCompression").Value = True
schemeElement.Properties.Item("doDynamicCompression").Value = True
schemeElement.Properties.Item("dll").Value = "%Windir%\system32\inetsrv\gzip.dll"
httpCompressionCollection.AddElement(schemeElement)

adminManager.CommitChanges()