Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Varning
Supporten har upphört för det indragna skrivbordsprogrammet Internet Explorer 11 och det har inaktiveras permanent via en Microsoft Edge-uppdatering för vissa versioner av Windows 10. Mer information finns i Vanliga frågor och svar om utfasningen av skrivbordsprogrammet Internet Explorer 11.
I den här artikeln beskrivs användningen av HTTP-huvuden för att styra cachelagringen av webbsidor i Internet Explorer.
Ursprunglig produktversion: Internet Explorer
Ursprungligt KB-nummer: 234067
Sammanfattning
Du kan använda Microsoft Internet Information Server (IIS) för att enkelt markera mycket flyktiga eller känsliga sidor med hjälp av följande skript i den extrema början av de specifika ASP-sidorna (Active Server Pages):
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
Förfallodatum och rubriken Förfaller
Vi rekommenderar starkt att alla webbservrar använder ett schema för förfallodatum för alla webbsidor. Det är en felaktig metod att en webbserver inte anger förfalloinformation via svarshuvudet HTTP Expires för varje resurs som returneras till begärande klienter. De flesta webbläsare och mellanliggande proxyservrar respekterar idag denna förfalloinformation och använder den för att öka effektiviteten i kommunikationen över nätverket.
Använd alltid Expires-huvudet för att ange den lämpligaste tiden när en viss fil på servern behöver uppdateras av klienten. När sidorna uppdateras regelbundet är nästa uppdateringsperiod det mest effektiva svaret. Ta till exempel en daglig nyhetssida på Internet som uppdateras varje dag exakt kl. 05.00. Webbservern för den här nyhetssidan ska returnera HTTP-huvudet Expires med värdet kl. 05.00 följande dag. När det är klart behöver webbläsaren inte kontakta webbservern igen förrän sidan har ändrats.
Sidor som inte förväntas ändras bör markeras med ett förfallodatum på cirka ett år.
I många fall har webbservrar en eller flera flyktiga sidor på en server som innehåller information som kan komma att ändras omedelbart. Dessa sidor bör markeras av servern med värdet "-1" för rubriken Upphör att gälla. Vid framtida begäranden från användaren kontaktar Internet Explorer vanligtvis webbservern för uppdateringar av den sidan via en villkorsstyrd if-modified-since-begäran. Sidan finns dock kvar i diskcachen (tillfälliga Internetfiler). Och sidan används i lämpliga situationer utan att kontakta fjärrwebbservern, till exempel:
- när knapparna BACK och FORWARD används för att komma åt navigeringshistoriken.
- när webbläsaren är i offlineläge.
Cache-Control-huvudet
Vissa sidor är dock så flyktiga eller känsliga att de inte kräver någon diskcachelagring. I detta syfte stöder Internet Explorer HTTP 1.1 Cache-Control-huvudet. Det här huvudet förhindrar all cachelagring av en viss webbresurs när värdet no-cache anges av en HTTP 1.1-server.
Sidor som hålls borta från cacheminnet är inte tillgängliga förrän webbläsaren kan återskapa webbservern. Servrar bör därför använda Cache-Control-huvudet sparsamt. I de flesta fall är användningen av Expires: -1 att föredra.
Pragma: No-Cache-huvudet
Äldre HTTP 1.0-servrar kan tyvärr inte använda Cache-Control-huvudet. För bakåtkompatibilitet med HTTP 1.0-servrar stöder Internet Explorer en särskild användning av HTTP Pragma: no-cache-huvudet. Om klienten kommunicerar med servern via en säker anslutning (https://) och servern returnerar en Pragma: no-cache-rubrik med svaret cachelagrar Inte Internet Explorer svaret.
Pragma: no-cache-huvudet var dock inte för det här ändamålet. Enligt specifikationerna för HTTP 1.0 och 1.1 definieras detta huvud endast i samband med en begäran, inte ett svar. Den är avsedd för proxyservrar som kan förhindra att vissa viktiga begäranden når målwebbservern. För framtida program är cachekontrollrubriken rätt sätt att kontrollera cachelagring.
HTTP-EQUIV META-taggar
HTML-sidor tillåter en särskild HTTP-EQUIV-form av META-taggen som anger specifika HTTP-huvuden inifrån HTML-dokumentet. Här är ett kort exempel på EN HTML-sida som använder både Pragma: no-cache och Expires: -1:
<HTML>
<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD>
<BODY>
</BODY>
</HTML>
Pragma: no-cache förhindrar cachelagring endast när det används över en säker anslutning. En Pragma: META-tagg utan cache behandlas identiskt med Expires: -1 om den används på en icke-säker sida. Sidan cachelagras men markeras som omedelbart förfallen.
Cache-Control META HTTP-EQUIV-taggar ignoreras och har ingen effekt i Internet Explorer version 4 eller 5. Om du vill använda Cache-Control måste den här rubriken anges med hjälp av HTTP-huvuden enligt beskrivningen i avsnittet Cache-Control ovan.
Anteckning
Användningen av HTTP-standardrubriker är mycket att föredra framför META-taggar. META-taggar måste vanligtvis visas överst i AVSNITTET HTML HEAD. Och det finns minst ett känt problem med Metataggen Pragma HTTP-EQUIV.
Serveralternativ för cachelagring
När Cache-Control-huvudet måste användas på icke-ASP-sidor kan det vara nödvändigt att använda alternativ i serverkonfigurationen för att lägga till det här huvudet automatiskt. Information om hur du lägger till HTTP-huvuden till serversvar för en viss katalog finns i serverdokumentet. Följ till exempel dessa steg i IIS 4:
- Starta IIS-hanteraren.
- Öppna standardwebbservern eller den aktuella webbservern i data- och tjänstträdet. Leta reda på katalogen som innehåller det innehåll som behöver cachekontrollrubriken.
- Öppna dialogrutan Egenskaper för katalogen.
- Välj fliken HTTP-huvuden .
- Välj knappen Lägg till i gruppen Anpassade HTTP-huvuden och lägg till Cache-Control för rubriknamnet och no-cache för rubrikvärdet.
Det är ingen bra idé att använda den här rubriken över hela webbservern. Begränsa dess användning enbart till innehåll som absolut inte får cachelagras på klienten.
Checklista för problem
Om du har tillämpat teknikerna i den här artikeln och fortfarande har problem med cachelagring och Internet Explorer kan du gå igenom den här praktiska checklistan steg för steg innan du kontaktar Microsoft för teknisk supporthjälp:
- Använder du Cache-Control-huvudet med ASP-egenskapen
Response.CacheControleller via ett returnerat HTTP-huvud? Det är det enda sättet att förhindra cachelagring i Internet Explorer. - Använder du Internet Explorer 4.01 Service Pack 2 eller senare? Det finns inget sätt att helt förhindra cachelagring i tidigare versioner av webbläsaren.
- Har du dubbelkollat att webbservern har HTTP 1.1 aktiverat och returnerar HTTP 1.1-svar till Internet Explorer? Cache-Control-huvuden är ogiltiga i HTTP 1.0-svar.
- Om du använder CGI/ISAPI/Servlets på serversidan följer du HTTP 1.1-specifikationen exakt, särskilt om CRLF-avslutning av HTTP-huvuden? I prestandans intresse är Internet Explorer vanligtvis oförlåtande mot svar som strider mot HTTP 1.1-specifikationen. Det resulterar vanligtvis i ignorerade rubriker eller rapporter om oväntade serverfel.
- Är HTTP-huvudena rättstavade?
Se även
- Mer information om HTTP 1.1-protokoll finns i den här externa länken: RFC 2616.
- Klientcache i IIS