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:
|
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
- Sulla barra delle applicazioni fare clic su Server Manager.
- In Server Manager fare clic sul menu Gestisci e quindi su Aggiungi ruoli e funzionalità.
- 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.
- 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.
- Nella pagina Selezione funzionalità fare clic su Avanti.
- Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
- Nella pagina Risultati fare clic su Chiudi.
Windows 8 o Windows 8.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.
- In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva le funzionalità di Windows.
- Espandere Internet Information Services, espandere Servizi Web a livello mondiale, espandere Funzionalità prestazioni e quindi selezionare Compressione dinamica contenuto e/o Compressione contenuto statico.
- Fare clic su OK.
- Fare clic su Close.
Windows Server 2008 o Windows Server 2008 R2
- Nella barra delle applicazioni fare clic su Start, scegliere Strumenti di amministrazione e quindi fare clic su Server Manager.
- Nel riquadro della gerarchia di Server Manager espandere Ruoli e quindi fare clic su Server Web (IIS).
- Nel riquadro Server Web (IIS) scorrere fino alla sezione Servizi ruolo e quindi fare clic su Aggiungi servizi ruolo.
- 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.
- Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
- Nella pagina Risultati fare clic su Chiudi.
Windows Vista o Windows 7
- Nella barra delle applicazioni fare clic su Start e quindi fare clic su Pannello di controllo.
- In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva funzionalità di Windows.
- Espandere Internet Information Services, quindi Servizi Web a livello mondiale, quindi Funzionalità prestazioni.
- Selezionare Http Compression Dynamic se si vuole installare la compressione dinamica e la compressione statica del contenuto se si vuole installare la compressione statica.
- 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()
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per