Gestire la scadenza del contenuto Web nella rete per la distribuzione di contenuti di AzureManage expiration of web content in Azure Content Delivery Network

I file provenienti da un server Web di origine accessibile pubblicamente possono essere memorizzati nella cache della rete per la distribuzione di contenuti (CDN) di Azure fino allo scadere della relativa durata (TTL).The files from any publicly accessible origin web server 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 imposta una o più regole di memorizzazione nella cache e 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 set up 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.You can choose to set no TTL on a 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.In this case, Azure CDN automatically applies a default TTL of seven days, unless you have set up caching rules in the Azure portal. Questa impostazione predefinita di durata (TTL) si applica solo alle ottimizzazioni di distribuzione web generali.This default TTL applies only to general web delivery optimizations. 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.For large file optimizations, the default TTL is one day, and for media streaming optimizations, the default TTL is one year.

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.For more information about how Azure CDN works to speed up access to files and other resources, see Overview of the Azure Content Delivery Network.

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. L'elemento <system.webServer>/<staticContent>/<clientCache> in qualsiasi file imposta l'intestazione Cache-Control per il contenuto.The <system.webServer>/<staticContent>/<clientCache> element in either file sets the Cache-Control header for your content.

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 all 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 netto è 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 will be cached for three days, except for any content in the \frequent directory, which will be cached for only six hours.

L'esempio di codice XML seguente mostra come impostare l'elemento <clientCache> in un file di configurazione per specificare una durata massima di tre giorni:The following XML example shows how to set the <clientCache> element in a configuration file 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