Gestire la scadenza del contenuto Web nella rete per la distribuzione di contenuti di Azure

I file dai server Web di origine accessibili pubblicamente possono essere memorizzati nella cache in Azure rete per la distribuzione di contenuti fino a quando non è trascorso il tempo di vita (TTL). Il valore TTL viene determinato dall'intestazione Cache-Control nella risposta HTTP dal server di origine. Questo articolo descrive come impostare le intestazioni Cache-Control per la funzionalità App Web di Servizio app di Microsoft Azure, Servizi cloud di Azure, applicazioni ASP.NET e siti Internet Information Services (IIS), che hanno tutti una configurazione simile. È possibile impostare l'intestazione Cache-Control usando i file di configurazione o a livello di codice.

È anche possibile controllare le impostazioni della cache dal portale di Azure impostando le regole di memorizzazione nella cache della rete per la distribuzione del contenuto. Se si creano una o più regole di memorizzazione nella cache e si imposta il relativo comportamento su Ignora o Ignora cache, le impostazioni di memorizzazione nella cache fornite in origine e descritte in questo articolo vengono ignorate. Per informazioni sui concetti generali sulla memorizzazione nella cache, vedere Come funziona la memorizzazione nella cache.

Suggerimento

È possibile scegliere di non impostare alcuna durata (TTL) per un file. In questo caso, Azure rete per la distribuzione di contenuti applica automaticamente un TTL predefinito di sette giorni, a meno che non siano state configurate le regole di memorizzazione nella cache nella portale di Azure. Questa impostazione predefinita di durata (TTL) si applica solo alle ottimizzazioni di distribuzione web generali. Per le ottimizzazioni di file di grandi dimensioni, il valore TTL predefinito è un giorno e per le ottimizzazioni dei flussi dei file multimediali, il valore TTL predefinito è un anno.

Per altre informazioni sul funzionamento di Azure rete per la distribuzione di contenuti per velocizzare l'accesso ai file e ad altre risorse, vedere Panoramica del rete per la distribuzione di contenuti di Azure.

Impostazione delle intestazioni di Controllo cache tramite le regole di memorizzazione nella cache della rete per la distribuzione di contenuti

Il metodo preferito per la configurazione dell'intestazione Cache-Control di un server Web consiste nell'usare le regole di memorizzazione nella cache nel portale di Azure. Per altre informazioni sulle regole di memorizzazione nella cache della rete per la distribuzione di contenuti, vedere Controllare il comportamento di memorizzazione nella cache di Azure rete per la distribuzione di contenuti con regole di memorizzazione nella cache.

Nota

Le regole di memorizzazione nella cache sono disponibili solo per Rete CDN di Azure profili Standard di Edgio. Per Rete CDN di Azure Premium dai profili Edgio, è necessario usare il motore regole di Azure rete per la distribuzione di contenuti nel portale di gestione per funzionalità simili.

Per passare alla pagina delle regole di memorizzazione nella cache della rete CDN:

  1. Nella portale di Azure selezionare un profilo di rete per la distribuzione di contenuti e quindi selezionare l'endpoint per il server Web.

  2. In Impostazioni nel riquadro sinistro selezionare Regole di memorizzazione nella cache.

    Screenshot del pulsante regole di memorizzazione nella cache della rete per la distribuzione di contenuti.

    Viene visualizzata la pagina Regole di memorizzazione nella cache.

    Screenshot della pagina di memorizzazione nella cache della rete per la distribuzione di contenuti.

Per configurare le intestazioni Cache-Control di un server Web tramite regole di memorizzazione nella cache globali:

  1. In Regole di memorizzazione nella cache globali, impostare Comportamento di memorizzazione nella cache della stringa di query su Ignora stringhe di query e impostare Comportamento di memorizzazione nella cache su Ignora.

  2. Per Durata scadenza cache immettere 3600 nella casella Secondi o 1 nella casella Ore.

    Screenshot dell'esempio di regole di memorizzazione nella cache globale della rete per la distribuzione di contenuti.

    Questa regola di memorizzazione nella cache globale imposta una durata di un'ora per la cache e influisce su tutte le richieste per l'endpoint. Esegue l'override di qualsiasi Cache-Control intestazione HTTP o Expires che viene inviata dal server di origine specificato dall'endpoint.

  3. Seleziona Salva.

Per configurare le intestazioni Cache-Control di un server Web tramite regole di memorizzazione nella cache personalizzate:

  1. In Regole di memorizzazione nella cache personalizzate creare due condizioni di corrispondenza:

    1. Per la prima condizione di corrispondenza impostare Condizione di corrispondenza su Percorso e immettere /webfolder1/* per Valori di corrispondenza. Impostare Comportamento memorizzazione nella cache su Override e immettere 4 nella casella Giorni .

    2. Per la seconda condizione di corrispondenza impostare Condizione di corrispondenza su Percorso e immettere /webfolder1/file1.txt per Valori di corrispondenza. Impostare Comportamento memorizzazione nella cache su Override e immettere 2 nella casella Giorni .

    Screenshot dell'esempio di regole di memorizzazione nella cache personalizzate della rete per la distribuzione di contenuti.

    La prima regola di memorizzazione nella cache personalizzata imposta una durata della cache di quattro giorni per tutti i file nella /webfolder1 cartella nel server di origine specificato dall'endpoint. La seconda regola esegue l'override della prima regola solo per il file1.txt file e imposta una durata della cache di due giorni.

  2. Seleziona Salva.

Impostazione delle intestazioni Cache-Control tramite dei file di configurazione

Per il contenuto statico, come immagini e fogli di stile, è possibile controllare la frequenza di aggiornamento modificando i file di configurazione applicationHost.config o Web.config per l'applicazione Web. Per impostare l'intestazione Cache-Control per il contenuto, usare l'elemento <system.webServer>/<staticContent>/<clientCache> in qualsiasi file.

Uso dei file Applicationhost.config

Il file ApplicationHost.config è il file radice del sistema di configurazione IIS. Le impostazioni di configurazione nel file ApplicationHost.config interessano tutte le applicazioni nel sito, ma se ne esegue l'override usando le impostazioni di qualsiasi altro file Web.config esistente per un'applicazione web.

Uso dei file Web.config

Con un file Web.config, è possibile personalizzare il comportamento dell'applicazione web intera o di una directory specifica sull'applicazione web. In genere, si ha almeno un file Web.config nella cartella radice dell'applicazione web. Per ogni file Web.config in una cartella specifica, le impostazioni di configurazione influiscono su tutti gli elementi della cartella e delle relative sottocartelle, a meno che non vengano sottoposti a override a livello di sottocartella da un altro file Web.config .

Ad esempio, è possibile impostare un elemento <clientCache> in un file Web.config nella cartella radice dell'applicazione web per memorizzare nella cache qualsiasi contenuto statico sull'applicazione web per tre giorni. È anche possibile aggiungere un file Web.config in una sottocartella con contenuto più variabile (ad esempio, \frequent) e impostare il relativo elemento <clientCache> per memorizzare nella cache il contenuto della sottocartella per sei ore. Il risultato è che il contenuto nell'intero sito Web è memorizzato nella cache per tre giorni, ad eccezione di qualsiasi contenuto nella directory \frequent, che verrà memorizzato nella cache solo per sei ore.

L'esempio di file di configurazione XML seguente mostra come impostare l'elemento <clientCache> per specificare una durata massima di tre giorni:

<configuration>
    <system.webServer>
        <staticContent>
            <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="3.00:00:00" />
        </staticContent>
    </system.webServer>
</configuration>

Per usare l'attributo cacheControlMaxAge, è necessario impostare il valore dell'attributo cacheControlMode su UseMaxAge. Questa impostazione ha fatto sì che l'intestazione HTTP e la direttiva, Cache-Control: max-age=<nnn>, fossero aggiunte alla risposta. Il formato del valore dell'intervallo di tempo per l'attributo cacheControlMaxAge è <days>.<hours>:<min>:<sec>. Il valore viene convertito in secondi e viene usato come il valore della direttiva Cache-Controlmax-age. Per altre informazioni sull'elemento <clientCache> , vedere Client Cache <clientCache>.

Impostazione delle intestazioni Cache-Control a livello di programmazione

Per ASP.NET applicazioni, è possibile controllare il comportamento di memorizzazione nella cache della rete per la distribuzione di contenuti a livello di codice impostando la proprietà HttpResponse.Cache dell'API .NET. Per informazioni sulla proprietà HttpResponse.Cache, vedere Proprietà HttpResponse.Cache e Classe HttpCachePolicy.

Per memorizzare nella cache il contenuto dell'applicazione in ASP.NET a livello di codice, eseguire la procedura seguente:

  1. Verificare che il contenuto sia contrassegnato come memorizzabile nella cache impostando HttpCacheability su Public.
  2. Impostare un validator della cache chiamando uno dei metodi seguenti HttpCachePolicy :
    • Chiamare SetLastModified per impostare un valore di timestamp per l'intestazioneLast-Modified.
    • Chiamare SetETag per impostare un valore per l'intestazioneETag.
  3. Facoltativamente, specificare un'ora di scadenza della cache chiamando SetExpires per impostare un valore dell'intestazione Expires. In caso contrario, si applica l'euristica predefinita della cache descritta in precedenza in questo documento.

Ad esempio, per memorizzare nella cache il contenuto per un'ora, aggiungere il codice C# seguente:

// Set the caching parameters.
Response.Cache.SetExpires(DateTime.Now.AddHours(1));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetLastModified(DateTime.Now);

Test dell'intestazione Cache-Control

È possibile verificare facilmente le impostazioni di durata (TTL) del contenuto web. Con gli strumenti di sviluppo del browser, verificare che il contenuto Web includa l'intestazione della Cache-Control risposta. È anche possibile usare uno strumento come wget, Postman o Fiddler per esaminare le intestazioni della risposta.

Passaggi successivi