Share via


Memorizzazione nella cache <>

Panoramica

L'elemento <caching> consente di abilitare o disabilitare la memorizzazione nella cache dell'output della pagina per un'applicazione Internet Information Services (IIS) 7. Questo elemento consente anche di configurare se l'output della pagina di IIS viene memorizzato nella cache in modalità utente, in modalità kernel o in entrambi i casi e cosa, se presente, i limiti di memorizzazione nella cache di output che si desidera imporre.

L'elemento <caching> contiene anche un <profiles> elemento contenente una raccolta di impostazioni della cache di output che è possibile applicare alle pagine di ASP.NET.

La memorizzazione nella cache dell'output della pagina archivia una risposta di una pagina dinamica, ad esempio una pagina ASP o una pagina ASP.NET, in memoria dopo che un browser lo richiede. Quando le richieste successive arrivano per la pagina, il server invia la risposta memorizzata nella cache anziché rielaborare la pagina. La cache di output della pagina ASP.NET è separata dalla cache di output IIS 7. Nelle applicazioni che usano la modalità di ASP.NET integrata, la cache di output della pagina ASP.NET può essere usata a livello di codice per qualsiasi tipo di contenuto, molto simile alla cache di output IIS 7.

La memorizzazione nella cache dell'output della pagina riduce il carico e il tempo di risposta del server. La memorizzazione nella cache di output funziona meglio con le pagine semi-dinamiche, ad esempio una pagina ASP.NET dipendente da una tabella di database che non cambia spesso.

La memorizzazione nella cache di output non è necessaria per i file statici, ad esempio file HTML, JPG o GIF e può causare un sovraccarico di memoria maggiore per le pagine di ASP.NET dinamiche o PHP che leggono da un database che cambia di frequente.

Compatibilità

Versione Note
IIS 10.0 L'elemento <caching> non è stato modificato in IIS 10.0.
IIS 8,5 L'elemento <caching> non è stato modificato in IIS 8.5.
IIS 8,0 L'elemento <caching> non è stato modificato in IIS 8.0.
IIS 7,5 L'elemento <caching> non è stato modificato in IIS 7.5.
IIS 7.0 L'elemento <caching> è stato introdotto in IIS 7.0.
IIS 6.0 N/D

Installazione

L'elemento <caching> è incluso nell'installazione predefinita di IIS 7.

Procedure

Come configurare la memorizzazione nella cache dell'output della pagina

  1. Aprire Gestione Internet Information Services (IIS):

    • Se si usa Windows Server 2012 o Windows Server 2012 R2:

      • Nella barra delle applicazioni fare clic su Server Manager, scegliere Strumenti e quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows 8 o Windows 8.1:

      • Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
      • Fare clic su Strumenti di amministrazione e quindi fare doppio clic su Gestione Internet Information Services (IIS).
    • Se si usa 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 Gestione Internet Information Services (IIS).
    • Se si usa Windows Vista o Windows 7:

      • Nella barra delle applicazioni fare clic su Start e quindi fare clic su Pannello di controllo.
      • Fare doppio clic su Strumenti di amministrazione e quindi fare doppio clic su Gestione Internet Information Services (IIS).
  2. Nel riquadro Connessioni passare alla connessione, al sito, all'applicazione o alla directory per cui si vuole configurare la memorizzazione nella cache dell'output della pagina.

  3. Nel riquadro Home scorrere fino a Memorizzazione nella cache di output e quindi fare doppio clic su Memorizzazione nella cache di output.
    Screenshot della memorizzazione nella cache di output selezionata nel riquadro Home del sito Web predefinito.

  4. Nel riquadro Azioni fare clic su Aggiungi...

  5. Nella finestra di dialogo Aggiungi regola cache digitare l'estensione del nome file da memorizzare nella cache nella casella Estensione nome file e quindi selezionare l'opzione memorizzazione nella cache in modalità utente , l'opzione memorizzazione nella cache in modalità kernel o entrambi.

  6. Selezionare le opzioni da usare per la memorizzazione nella cache e quindi fare clic su OK.
    Screenshot della finestra di dialogo Aggiungi regola cache con le opzioni specificate.

Configurazione

È possibile configurare l'elemento <caching> a livello di server nel file ApplicationHost.config o nel sito, nell'applicazione o a livello di directory in un file di Web.config.

Attributi

Attributo Descrizione
enabled Attributo booleano facoltativo.

Specifica se la memorizzazione nella cache dell'output della pagina è abilitata.

Il valore predefinito è true.
enableKernelCache Attributo booleano facoltativo.

Specifica se la memorizzazione nella cache del kernel è abilitata.

Il valore predefinito è true.
maxCacheSize Attributo uint facoltativo.

Specifica le dimensioni massime della cache di output.

Nota: Questa impostazione è efficace solo a livello del file di ApplicationHost.config. Se si imposta questa proprietà a un livello inferiore, non avrà alcun effetto.

Il valore predefinito è 0.
maxResponseSize Attributo uint facoltativo.

Specifica le dimensioni massime della risposta che possono essere memorizzate nella cache.

Nota: Questa impostazione è efficace solo a livello del file di ApplicationHost.config. Se si imposta questa proprietà a un livello inferiore, non avrà alcun effetto.

Il valore predefinito è 262144.

Elementi figlio

Elemento Descrizione
profiles Elemento facoltativo.

Contiene un gruppo di impostazioni della cache di output che possono essere applicate alle pagine ASP.NET.

Esempio di configurazione

L'esempio di configurazione seguente abilita la memorizzazione nella cache in modalità utente e la memorizzazione nella cache in modalità kernel, entrambe abilitate per impostazione predefinita in IIS 7.0. Usa anche l'elemento contenuto dall'elemento <profiles> per abilitare la <add> memorizzazione nella cache di output per i file con estensione asp. Usa anche l'attributo dei criteri per memorizzare nella cache la pagina fino a quando non cambia; esegue la stessa operazione per la memorizzazione nella cache del kernel usando l'attributo kernelCachePolicy .

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true">
         <profiles>
            <add extension=".asp" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
         </profiles>
      </caching>
   </system.webServer>
</configuration>

L'esempio di codice seguente imposta la dimensione massima della cache di output su 1 gigabyte e imposta la dimensione massima di una risposta che può essere archiviata nella cache di output su 512 kilobyte.

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true" maxCacheSize="1000" maxResponseSize="512000"/>
   </system.webServer>
</configuration>

Codice di esempio

Gli esempi seguenti configurano la memorizzazione nella cache dell'output della pagina per i file con estensione asp e configuraNO IIS per memorizzare nella cache nella modalità utente e nella modalità kernel fino a quando i file ASP non cambiano.

AppCmd.exe

appcmd.exe set config -section:system.webServer/caching /+"profiles.[extension='asp',policy='CacheUntilChange',kernelCachePolicy='CacheUntilChange']" /commit:apphost

Nota

È necessario assicurarsi di impostare il parametro commit su apphost quando si usa AppCmd.exe per configurare queste impostazioni. Questa operazione esegue il commit delle impostazioni di configurazione nella sezione percorso appropriata nel file di 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 cachingSection = config.GetSection("system.webServer/caching");
         ConfigurationElementCollection profilesCollection = cachingSection.GetCollection("profiles");

         ConfigurationElement addElement = profilesCollection.CreateElement("add");
         addElement["extension"] = @"asp";
         addElement["policy"] = @"CacheUntilChange";
         addElement["kernelCachePolicy"] = @"CacheUntilChange";
         profilesCollection.AddAt(0, addElement);

         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 cachingSection As ConfigurationSection = config.GetSection("system.webServer/caching")
      Dim profilesCollection As ConfigurationElementCollection = cachingSection.GetCollection("profiles")
      Dim addElement As ConfigurationElement = profilesCollection.CreateElement("add")
      addElement("extension") = "asp"
      addElement("policy") = "CacheUntilChange"
      addElement("kernelCachePolicy") = "CacheUntilChange"
      profilesCollection.AddAt(0, addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST");
var profilesCollection = cachingSection.ChildElements.Item("profiles").Collection;

var addElement = profilesCollection.CreateNewElement("add");
addElement.Properties.Item("extension").Value = "asp";
addElement.Properties.Item("policy").Value = "CacheUntilChange";
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange";
profilesCollection.AddElement(addElement, 0);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST")
Set profilesCollection = cachingSection.ChildElements.Item("profiles").Collection

Set addElement = profilesCollection.CreateNewElement("add")
addElement.Properties.Item("extension").Value = "asp"
addElement.Properties.Item("policy").Value = "CacheUntilChange"
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange"
profilesCollection.AddElement addElement, 0

adminManager.CommitChanges()