Come impedire la memorizzazione in Internet Explorer

Traduzione articoli Traduzione articoli
Identificativo articolo: 234067 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato precedentemente pubblicato con il codice di riferimento I234067
Espandi tutto | Chiudi tutto

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 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 INFO: Controllo caching di pagine Web con IIS 4.0
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

ProprietÓ

Identificativo articolo: 234067 - Ultima modifica: venerdý 20 gennaio 2006 - Revisione: 4.1
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 4.01 Service Pack 2
  • 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.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com