Condividi tramite


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:

  • Gli attributi name e 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 che contiene l'intestazione "Accept-Encoding: gzip" o "Accept-Encoding: deflate" fa sì che il contenuto venga compresso, 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 nella directory viene trovata una versione aggiornata e compressa del file statico, 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 lo aggiunge 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 di contenuto dinamico che contiene l'intestazione "Accept-Encoding: gzip" o "Accept-Encoding: deflate" fa sì che il contenuto venga compresso, 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 cambia sempre per definizione, IIS non memorizza nella cache le versioni compresse del contenuto dinamico. La compressione dinamica utilizza notevoli risorse di cpu e 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 contenuto dinamico o statico. I livelli di compressione inferiori producono file compressi leggermente più grandi, ma con un impatto complessivo inferiore sulle risorse di CPU e memoria. I livelli di compressione più elevati comportano 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à della metabase IIS 6.0 seguenti:
  • HcCompressionDll
  • HcDoDynamicCompression
  • HcDoStaticCompression
  • HcDynamicCompressionLevel

Attrezzaggio

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), Server Web, prestazioni, quindi selezionare Compressione contenuto statico e/o Compressione contenuto dinamico. Fare clic su Avanti.
    Screenshot del riquadro Prestazioni espanso con l'opzione Compressione contenuto statica 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 fino all'angolo inferiore sinistro, fare clic con il pulsante destro del mouse sul pulsante Start e quindi scegliere 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, servizi Web globali, funzionalità prestazioni, quindi selezionare Compressione contenuto dinamico e/o Compressione contenuto statico.
    Screenshot che mostra il riquadro Funzionalità prestazioni in Attivare o disattivare le funzionalità di Windows e la compressione contenuto statica evidenziata.
  4. Fare clic su OK.
  5. Fare clic su Close.

Windows Server 2008 o Windows Server 2008 R2

  1. Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti di amministrazione e quindi fare clic su Server Manager.
  2. Nel riquadro gerarchia di Server Manager espandere Ruoli, 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 Selezione servizi ruolo della Procedura guidata Aggiungi servizi ruolo selezionare Compressione contenuto dinamico se si desidera installare la compressione dinamica e la compressione del contenuto statico se si desidera installare la compressione statica e quindi fare clic su Avanti.
    Screenshot che mostra la pagina Select Role Services con il nodo Prestazioni espanso e La compressione dinamica del contenuto 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. Sulla barra delle applicazioni fare clic su Start e quindi 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 globale, quindi Funzionalità delle prestazioni.
  4. Selezionare Http Compression Dynamic se si desidera installare la compressione dinamica e la compressione statica del contenuto se si vuole installare la compressione statica.
    Screenshot della pagina Attiva o disattiva funzionalità di Windows che mostra il nodo Funzionalità prestazioni espanso e H T T T P Common Dynamics selezionato.
  5. Fare clic su OK.

Procedure

Non esiste un'interfaccia utente per l'impostazione dello 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.

Impostazione

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. Prima di rendere effettive le modifiche apportate a questo attributo, è necessario riavviare il servizio Www (World Wide Web Publishing Service).
doDynamicCompression Attributo booleano facoltativo.

Specifica se le risposte alle richieste di contenuto dinamico, ad esempio gli script nelle estensioni ASP (Active Server Pages) e ISAPI, vengono compresse. Se questo valore viene modificato a livello di singolo schema di compressione, il servizio WWW deve essere riavviato prima che la modifica venga applicata.

Il valore predefinito è true.
doStaticCompression Attributo booleano facoltativo.

Specifica se IIS comprime le risposte alle richieste di 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 verrà fornita alcuna risposta compressa 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 sono compresi tra 0 (livello di compressione più basso e utilizzo minimo della CPU) e 10 (livello di compressione più elevato 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 cpu e memoria, 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 sono compresi tra 0 (livello di compressione più basso e utilizzo minimo della CPU) e 10 (livello di compressione più elevato e utilizzo più elevato della CPU). 0 indica 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 di schemi 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()