DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 234067 - Ultima modifica: venerdì 20 gennaio 2006 - Revisione: 4.1

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I234067

In questa pagina

Sommario

In questo articolo viene descritto come utilizzare le intestazioni HTTP per controllare la memorizzazione nella cache delle pagine Web in Internet Explorer.

È possibile utilizzare Microsoft Internet Information Server (IIS) per contrassegnare facilmente pagine particolarmente volatili o riservate inserendo lo script riportato di seguito come primo elemento all'inizio delle pagine ASP (Active Server Page):
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
				

Informazioni

Scadenza e intestazioni Expires

È consigliabile che tutti i server Web utilizzino uno schema per la scadenza delle pagine Web. È infatti una pessima abitudine per un server Web non fornire informazioni sulla scadenza nell'intestazione di risposta HTTP Expires per le varie risorse che vengono restituite ai client. La maggior parte dei browser e dei proxy intermedi oggi rispetta queste informazioni di scadenza e le utilizza per migliorare l'efficienza delle comunicazioni in rete.

L'intestazione Expires dovrebbe essere sempre utilizzata per specificare il momento più adatto in cui il client deve aggiornare un dato file sul server. Se le pagine vengono aggiornate regolarmente, la risposta più efficiente è costituita dal periodo successivo per l'aggiornamento. Prendiamo ad esempio la pagina Web di un quotidiano su Internet che viene aggiornata ogni giorno dopo le ore 17:00. Il server Web per questa pagina di notizie dovrebbe ritornare un'intestazione Expires con il valore 17:00 del giorno successivo. In questo modo il browser non contatterà il server Web finché la pagina non sarà stata modificata.

Le pagine che non si desidera modificare dovrebbero invece essere contrassegnate con una data di scadenza di un anno circa.

In molti casi i server Web dispongono di una o più pagine volatili in un server di informazioni, che sono soggette a cambiamenti continui. Tali pagine dovrebbero essere contrassegnate dal server con il valore di "-1" per l'intestazione Expires. In caso di future richieste da parte dell'utente, Internet Explorer contatterà il server Web alla ricerca di eventuali aggiornamenti per tale pagina inviando una richiesta condizionale If-Modified-Since. La pagina continuerà tuttavia a essere presente nella cache del disco, ovvero nella cartella File temporanei Internet, e potrà essere utilizzata al momento opportuno senza dover contattare il server Web remoto, ovvero quando l'utente utilizzerà i pulsanti INDIETRO e AVANTI per accedere alla cronologia o quando il browser verrà utilizzato in modalità non in linea.

L'intestazione Cache-Control

Alcune pagine sono tuttavia talmente volatili o riservate da non dover essere memorizzate nella cache del disco. A tale proposito, Internet Explorer supporta l'intestazione HTTP 1.1 Cache-Control, che impedisce la memorizzazione nella cache di una particolare risorsa Web quando il server HTTP 1.1 specifica il valore no-cache.

Dato che le pagine che non vengono memorizzate nella cache non sono accessibili finché il browser non sarà in grado di contattare nuovamente il server Web, è consigliabile utilizzare con parsimonia l'intestazione Cache-Control. Nella maggior parte dei casi, è infatti preferibile ricorrere all'utilizzo di "Expires: -1".

Pragma: Intestazione No-Cache

Poiché l'intestazione Cache-Control non può essere utilizzata dai server HTTP 1.0 proprietari, per garantire la compatibilità con tali server, Internet Explorer supporta uno speciale utilizzo del pragma HTTP: intestazione no-cache. Se infatti il client comunica con il server tramite una connessione sicura (https://) e il server ritorna un pragma: intestazione no-cache assieme alla risposta, Internet Explorer non memorizzerà la risposta nella cache.

Si noti tuttavia che il pragma: intestazione no-cache non è stato creato a tale scopo. In base alle specifiche HTTP 1.0 e 1.1, questa intestazione è definita solo nel contesto di una richiesta e non di una risposta. In pratica è stata pensata per i server proxy che potrebbero impedire che determinate richieste di una certa importanza raggiungano il server Web di destinazione. Per le applicazioni future, l'intestazione Cache-Control rappresenta il mezzo ideale per controllare la memorizzazione delle pagine nella cache.

Tag HTTP-EQUIV META

Le pagine HTML consentono una speciale forma HTTP-EQUIV di tag META che specifica particolari intestazioni HTTP dall'interno del documento HTML. Di seguito è riportato un breve esempio di pagina HTML che utilizza entrambi i pragma: no-cache ed Expires: -1:
<HTML><HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD><BODY>
</BODY>
</HTML>
				
Pragma: no-cache impedisce la memorizzazione nella cache solo se utilizzato con una connessione sicura. Un tag META di pragma: no-cache è trattato alla stregua dell'intestazione Expires: -1 se utilizzato in una pagina non protetta. La pagina verrà memorizzata nella cache ma contrassegnata come immediatamente scaduta.

I tag META HTTP-EQUIV dell'intestazione Cache-Control vengono ignorati e non hanno effetto in Internet Explorer versione 4 o 5. Per utilizzare l'intestazione Cache-Control, questa deve essere specificata utilizzando intestazioni HTTP, come descritto nella sezione precedente relativa all'intestazione Cache-Control.

Si noti che l'utilizzo delle intestazioni HTTP standard è preferibile rispetto all'utilizzo dei tag META. I tag META devono essere presenti nella parte iniziale della sezione HTML HEAD. Inoltre esiste almeno una problematica nota relativa al tag META HTTP-EQUIV. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
222064  (http://support.microsoft.com/kb/222064/ ) Il tag "Pragma: No-cache" può impedire che una pagina venga memorizzata nella cache
Opzioni del server per la memorizzazione Quando è necessario utilizzare l'intestazione Cache-Control all'interno di pagine non ASP, potrebbe essere necessario impostare apposite opzioni della configurazione server che consentano l'aggiunta automatica di questa intestazione. Fare riferimento alla documentazione del server per informazioni in merito al processo di aggiunta di intestazioni HTTP alle risposte del server per una particolare directory. Ad esempio, in IIS 4, attenersi alla seguente procedura:
  • Richiamare Gestione Servizi Internet.
  • Utilizzando la struttura delle cartelle e dei servizi, aprire il server Web predefinito o il server Web in questione e trovare la directory contenente le pagine a cui si desidera applicare l'intestazione Cache-Control.
  • Aprire la finestra di dialogo delle proprietà per tale directory.
  • Scegliere la scheda Intestazioni HTTP.
  • Fare clic sul pulsante Aggiungi nel gruppo Intestazioni HTTP personalizzate e aggiungere Cache-Control per il nome dell'intestazione e no-cache per il valore dell'intestazione.
Non è consigliabile utilizzare questa intestazione in maniera globale sul server Web, bensì utilizzarla esclusivamente per quei contenuti che non devono essere assolutamente memorizzati nella cache sul client. Elenco di controllo dei problemi Se dopo aver applicato le procedure descritte in questo articolo si continua a riscontrare problemi di memorizzazione nella cache e in Internet Explorer, attenersi ai passaggi descritti in questo breve elenco prima di contattare il Servizio Tecnico Microsoft:
  • Si sta utilizzando l'intestazione Cache-Control con la proprietà ASP "Response.CacheControl" oppure tramite un'intestazione HTTP ritornata? Questo è l'unico modo per impedire la memorizzazione nella cache in Internet Explorer.
  • Si sta utilizzando Internet Explorer 4.01 con Service Pack 2 o versioni successive? Non esiste infatti alcun modo per impedire efficacemente la memorizzazione nella cache nelle versioni precedenti del browser.
  • È stato eseguito un controllo incrociato per verificare che nel server Web sia abilitato HTTP 1.1 e che il server ritorni le risposte HTTP 1.1 a Internet Explorer? Le intestazioni Cache-Control non sono valide nelle risposte HTTP 1.0.
  • Se si utilizza CGI/ISAPI/Servlets sul lato server, vengono rispettate esattamente le specifiche HTTP 1.1, in modo particolare con riferimento alla terminazione CRLF delle intestazioni HTTP? Nell'interesse delle prestazioni, Internet Explorer è particolarmente inesorabile nei confronti delle risposte che violano le specifiche HTTP 1.1, il che si traduce solitamente in intestazioni ignorate o report con errori di server inattesi.
  • Si è verificato che le intestazioni HTTP non contengano errori?

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito:
189409  (http://support.microsoft.com/kb/189409/ ) INFO: Controllo caching di pagine Web con IIS 4.0
165150  (http://support.microsoft.com/kb/165150/ ) Come utilizzare il pragma: No-cache con IIS e Internet Explorer
Per ulteriori informazioni su HTTP/1.1, visitare il seguente sito Web per ottenere la RFC 2616 (informazioni in lingua inglese):
http://www.w3.org/Protocols/rfc2616/rfc2616.html (http://www.w3.org/Protocols/rfc2616/rfc2616.html)

Le informazioni in questo articolo si applicano a
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
  • Microsoft Internet Explorer 6.0
  • Microsoft Internet Explorer 6.0 Service Pack 1
Chiavi: 
kbhowto kbcaching kbfaq KB234067
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store