Gestire la scadenza del contenuto Web nella rete CDN di AzureManage expiration of web content in Azure CDN

I file provenienti da server Web di origine accessibili pubblicamente possono essere memorizzati nella cache della rete per la distribuzione di contenuti (CDN) di Azure fino allo scadere della relativa durata (TTL).Files from publicly accessible origin web servers can be cached in Azure Content Delivery Network (CDN) until their time-to-live (TTL) elapses. La durata (TTL) è determinata dall'intestazione Cache-Control nella risposta HTTP del server di origine.The TTL is determined by the Cache-Control header in the HTTP response from the origin server. 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.This article describes how to set Cache-Control headers for the Web Apps feature of Microsoft Azure App Service, Azure Cloud Services, ASP.NET applications, and Internet Information Services (IIS) sites, all of which are configured similarly. È possibile impostare l'intestazione Cache-Control usando i file di configurazione o a livello di codice.You can set the Cache-Control header either by using configuration files or programmatically.

È inoltre possibile controllare le impostazioni della cache dal portale di Azure mediante l'impostazione delle regole di memorizzazione nella cache della rete CDN.You can also control cache settings from the Azure portal by setting CDN caching rules. 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.If you create one or more caching rules and set their caching behavior to Override or Bypass cache, the origin-provided caching settings discussed in this article are ignored. Per informazioni sui concetti generali sulla memorizzazione nella cache, vedere Come funziona la memorizzazione nella cache.For information about general caching concepts, see How caching works.

Suggerimento

È possibile scegliere di non impostare alcuna durata (TTL) per un file. In questo caso, la rete CDN di Azure applica automaticamente una durata (TTL) predefinita di sette giorni, a meno che non siano state configurate le regole di memorizzazione nella cache nel 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 sull'uso della rete CDN di Azure per velocizzare l'accesso a file e altre risorse, vedere Panoramica della rete per la distribuzione di contenuti (rete CDN) di Azure.

Impostazione delle intestazioni Cache-Control tramite le regole di memorizzazione nella cache della rete CDNSetting Cache-Control headers by using CDN caching rules

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.The preferred method for setting a web server's Cache-Control header is to use caching rules in the Azure portal. Per altre informazioni sulle regole di memorizzazione nella cache della rete CDN, vedere Controllare il comportamento di memorizzazione nella cache della rete CDN di Azure con regole.For more information about CDN caching rules, see Control Azure CDN caching behavior with caching rules.

Nota

Le regole di memorizzazione nella cache sono disponibili solo per i profili di rete CDN Standard di Azure con tecnologia Verizon e di rete CDN Standard di Azure con tecnologia Akamai. Per i profili di rete CDN Premium di Azure con tecnologia Verizon è necessario usare il motore regole della rete CDN di Azure accessibile dal portale tramite il pulsante Gestisci per funzionalità analoghe.

Per passare alla pagina delle regole di memorizzazione nella cache della rete CDN:To navigate to the CDN caching rules page:

  1. Nel portale di Azure selezionare un profilo della rete CDN, quindi selezionare l'endpoint per il server Web.In the Azure portal, select a CDN profile, then select the endpoint for the web server.

  2. In Impostazioni nel riquadro sinistro selezionare Regole di memorizzazione nella cache.In the left pane under Settings, select Caching rules.

    Pulsante Regole di memorizzazione nella cache della rete CDN

    Viene visualizzata la pagina Regole di memorizzazione nella cache.The Caching rules page appears.

    Pagina Regole di memorizzazione nella cache della rete CDN

Per configurare le intestazioni Cache-Control di un server Web tramite regole di memorizzazione nella cache globali:To set a web server's Cache-Control headers by using global caching rules:

  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.Under Global caching rules, set Query string caching behavior to Ignore query strings and set Caching behavior to Override.

  2. Per Durata scadenza cache immettere 3600 nella casella Secondi o 1 nella casella Ore.For Cache expiration duration, enter 3600 in the Seconds box or 1 in the Hours box.

    Esempio di regole di memorizzazione nella cache globali della rete CDN

    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.This global caching rule sets a cache duration of one hour and affects all requests to the endpoint. Esegue l'override di qualsiasi intestazione HTTP Cache-Control o Expires inviata dal server di origine specificato dall'endpoint.It overrides any Cache-Control or Expires HTTP headers that are sent by the origin server specified by the endpoint.

  3. Selezionare Salva.Select Save.

Per configurare le intestazioni Cache-Control di un server Web tramite regole di memorizzazione nella cache personalizzate:To set a web server file's Cache-Control headers by using custom caching rules:

  1. In Regole di memorizzazione nella cache personalizzate creare due condizioni di corrispondenza:Under Custom caching rules, create two match conditions:

    a.a. Per la prima condizione di corrispondenza impostare Condizione di corrispondenza su Percorso e immettere /webfolder1/* per Valori di corrispondenza.For the first match condition, set Match condition to Path and enter /webfolder1/* for Match value. Impostare Comportamento di memorizzazione nella cache su Ignora e immettere 4 nella casella Ore.Set Caching behavior to Override and enter 4 in the Hours box.

    b.b. Per la seconda condizione di corrispondenza impostare Condizione di corrispondenza su Percorso e immettere /webfolder1/file1.txt per Valori di corrispondenza.For the second match condition, set Match condition to Path and enter /webfolder1/file1.txt for Match value. Impostare Comportamento di memorizzazione nella cache su Ignora e immettere 2 nella casella Ore.Set Caching behavior to Override and enter 2 in the Hours box.

    Esempio di regole di memorizzazione nella cache personalizzate della rete CDN

    La prima regola di memorizzazione nella cache personalizzata imposta una durata della cache di quattro ore per qualsiasi file nella cartella /webfolder1 nel server di origine specificato dall'endpoint.The first custom caching rule sets a cache duration of four hours for any files in the /webfolder1 folder on the origin server specified by your endpoint. La seconda regola esegue l'override della prima regola solo per il file file1.txt e imposta una durata della cache di due ore per tale file.The second rule overrides the first rule for the file1.txt file only and sets a cache duration of two hours for it.

  2. Selezionare Salva.Select Save.

Impostazione delle intestazioni Cache-Control tramite dei file di configurazioneSetting Cache-Control headers by using configuration files

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.For static content, such as images and style sheets, you can control the update frequency by modifying the applicationHost.config or Web.config configuration files for your web application. Per impostare l'intestazione Cache-Control per il contenuto, usare l'elemento <system.webServer>/<staticContent>/<clientCache> in qualsiasi file.To set the Cache-Control header for your content, use the <system.webServer>/<staticContent>/<clientCache> element in either file.

Uso dei file Applicationhost.configUsing ApplicationHost.config files

Il file ApplicationHost.config è il file radice del sistema di configurazione IIS.The ApplicationHost.config file is the root file of the IIS configuration system. 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.The configuration settings in an ApplicationHost.config file affect all applications on the site, but are overridden by the settings of any Web.config files that exist for a web application.

Uso dei file Web.configUsing Web.config files

Con un file Web.config, è possibile personalizzare il comportamento dell'applicazione web intera o di una directory specifica sull'applicazione web.With a Web.config file, you can customize the way your entire web application or a specific directory on your web application behaves. In genere, si ha almeno un file Web.config nella cartella radice dell'applicazione web.Typically, you have at least one Web.config file in the root folder of your web application. Per ciascun file Web.config in una cartella specifica, le impostazioni di configurazione influiscono su qualsiasi elemento presente nella cartella e in tutte le sottocartelle, a meno di non eseguirne l'override a livello di sottocartella da un altro file Web.config.For each Web.config file in a specific folder, the configuration settings affect everything in that folder and its subfolders, unless they are overridden at the subfolder level by another Web.config file.

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.For example, you can set a <clientCache> element in a Web.config file in the root folder of your web application to cache all static content on your web application for three days. È 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.You can also add a Web.config file in a subfolder with more variable content (for example, \frequent) and set its <clientCache> element to cache the subfolder's content for six hours. 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.The net result is that content on the entire web site is cached for three days, except for any content in the \frequent directory, which is cached for only six hours.

L'esempio di file di configurazione XML seguente mostra come impostare l'elemento <clientCache> per specificare una durata massima di tre giorni:The following XML configuration file example shows how to set the <clientCache> element to specify a maximum age of three days:

<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.To use the cacheControlMaxAge attribute, you must set the value of the cacheControlMode attribute to UseMaxAge. Questa impostazione ha fatto sì che l'intestazione HTTP e la direttiva, Cache-Control: max-age=<nnn>, fossero aggiunte alla risposta.This setting caused the HTTP header and directive, Cache-Control: max-age=<nnn>, to be added to the response. Il formato del valore dell'intervallo di tempo per l'attributo cacheControlMaxAge è <days>.<hours>:<min>:<sec>.The format of the timespan value for the cacheControlMaxAge attribute is <days>.<hours>:<min>:<sec>. Il valore viene convertito in secondi e viene usato come il valore della direttiva Cache-Control max-age.Its value is converted to seconds and is used as the value of the Cache-Control max-age directive. Per altre informazioni sull'elemento <clientCache>, vedere Cache client.For more information about the <clientCache> element, see Client Cache .

Impostazione delle intestazioni Cache-Control a livello di programmazioneSetting Cache-Control headers programmatically

Per le applicazioni ASP.NET, gestire a livello di codice il comportamento di memorizzazione nella cache della rete CDN impostando la proprietà HttpResponse.Cache dell'API.NET.For ASP.NET applications, you control the CDN caching behavior programmatically by setting the HttpResponse.Cache property of the .NET API. Per informazioni sulla proprietà HttpResponse.Cache, vedere Proprietà HttpResponse.Cache e Classe HttpCachePolicy.For information about the HttpResponse.Cache property, see HttpResponse.Cache Property and HttpCachePolicy Class.

Per memorizzare nella cache il contenuto dell'applicazione in ASP.NET a livello di codice, eseguire la procedura seguente:To programmatically cache application content in ASP.NET, follow these steps:

  1. Verificare che il contenuto sia contrassegnato come memorizzabile nella cache impostando HttpCacheability su Public.Verify that the content is marked as cacheable by setting HttpCacheability to Public.
  2. Impostare un validator della cache chiamando uno dei metodi HttpCachePolicy seguenti:Set a cache validator by calling one of the following HttpCachePolicy methods:
    • Chiamare SetLastModified per impostare un valore di timestamp per l'intestazioneLast-Modified.Call SetLastModified to set a timestamp value for the Last-Modified header.
    • Chiamare SetETag per impostare un valore per l'intestazioneETag.Call SetETag to set a value for the ETag header.
  3. Facoltativamente, specificare un'ora di scadenza della cache chiamando SetExpires per impostare un valore dell'intestazione Expires.Optionally, specify a cache expiration time by calling SetExpires to set a value for the Expires header. In caso contrario, si applica l'euristica predefinita della cache descritta in precedenza in questo documento.Otherwise, the default cache heuristics described previously in this document apply.

Ad esempio, per memorizzare nella cache il contenuto per un'ora, aggiungere il codice C# seguente:For example, to cache content for one hour, add the following C# code:

// 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-ControlTesting the Cache-Control header

È possibile verificare facilmente le impostazioni di durata (TTL) del contenuto web.You can easily verify the TTL settings of your web content. Con gli strumenti di sviluppo del browser verificare che il contenuto web includa l'intestazione della risposta Cache-Control.With your browser's developer tools, test that your web content includes the Cache-Control response header. È anche possibile usare uno strumento come wget, Postman o Fiddler per esaminare le intestazioni della risposta.You can also use a tool such as wget, Postman, or Fiddler to examine the response headers.

Passaggi successiviNext Steps