JAK: Zapobieganie buforowaniu w programie Internet Explorer

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 234067 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Ten artykuł został opublikowany wcześniej pod numerem PL234067
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

W tym artykule opisano sposób użycia nagłówków HTTP do sterowania buforowaniem stron sieci Web w programie Internet Explorer.

Można skorzystać z programu Microsoft Internet Information Server (IIS), aby łatwo oznaczyć wysoce nietrwałe lub wrażliwe strony umieszczając poniższy skrypt na samym początku określonych stron ASP (Active Server Pages):
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>

Więcej informacji

Nagłówek Expiration oraz Expires

Zdecydowanie zaleca się, aby wszystkie serwery sieci Web używały schematu wygasania dla wszystkich stron sieci Web. W przypadku serwerów sieci Web bardzo złym zwyczajem jest nie podawanie informacji o wygaśnięciu przez nagłówek odpowiedzi HTTP Expires dla każdego zasobu zwróconego klientom wysyłającym żądanie. Większość przeglądarek oraz średniozaawansowanych serwerów proxy obsługuje obecnie informacje o wygaśnięciu i korzystają z nich w celu zwiększenia efektywności komunikacji w sieci.

Nagłówek Expires powinien zawsze być używany do określenia najbardziej odpowiedniego czasu dla zaktualizowania przez klienta wybranego pliku na serwerze. Gdy strony są aktualizowane regularnie, kolejnym okresem aktualizacji będzie najbardziej efektywna odpowiedź. Jako przykład może posłużyć strona internetowa z wiadomościami, która jest aktualizowana codziennie o piątej rano. Serwer sieci Web tej strony powinien zwrócić nagłówek Expires zawierający wartość oznaczającą piątą rano następnego dnia. Gdy tak się stanie, przeglądarka nie będzie kontaktować się ponownie z serwerem sieci Web do chwili rzeczywistej zmiany strony.

Strony, których zmiany nie są planowane, powinny być oznaczone w przybliżeniu roczną datą wygaśnięcia.

W wielu przypadkach serwery sieci Web zawierają jedną lub więcej nietrwałych stron z informacjami, które mogą zmienić się w każdej chwili. Te strony powinny być oznaczane nagłówkiem Expires o wartości „-1”. Przy kolejnych żądaniach użytkownika, program Internet Explorer zwykle kontaktuje się z serwerem sieci Web z warunkowym żądaniem aktualizacji strony If-Modified-Since. Strona jednak pozostaje w buforze na dysku („Tymczasowe pliki internetowe”) i jest używana w odpowiednich sytuacjach bez kontaktowania się ze zdalnym serwerem sieci Web, na przykład podczas korzystania z przycisków Wstecz i Dalej w celu uzyskania dostępu do historii nawigacji lub gdy przeglądarka jest w trybie offline.

Nagłówek Cache-Control

Niektóre strony są jednak tak nietrwałe lub wrażliwe, że nie wymagają buforowania na dysku. W tym celu program Internet Explorer obsługuje nagłówek HTTP 1.1 Cache-Control, który uniemożliwia buforowanie wybranych zasobów sieci Web, gdy serwer HTTP 1.1 określił wartość no-cache.

Ponieważ strony nie znajdujące się w buforze nie są dostępne bez ponownego kontaktowania się z serwerem sieci Web, serwery powinny używać nagłówka Cache-Control z umiarem. W większości przypadków preferowane jest użycie nagłówka „Expires: -1”.

Nagłówek Pragma: No-Cache

Starsze serwery HTTP 1.0 nie mogą niestety używać nagłówka Cache-Control. Dla zachowania zgodności wstecznej z serwerami HTTP 1.0, program Internet Explorer w specjalny sposób obsługuje nagłówek HTTP Pragma: no-cache. Jeśli klient komunikuje się z serwerem przez połączenie bezpieczne (https://) i serwer zwraca w odpowiedzi nagłówek Pragma: no-cache, program Internet Explorer nie buforuje odpowiedzi.

Należy pamiętać, że nagłówek Pragma: no-cache nie został zaprojektowany w tym celu. Według specyfikacji HTTP 1.0 oraz 1.1 nagłówek jest definiowany tylko w kontekście żądań a nie odpowiedzi i jest przeznaczony dla serwerów proxy, aby mogły uniemożliwić dostarczenie pewnych ważnych żądań do docelowego serwera sieci Web. Do sterowania buforowaniem należy podczas tworzenia aplikacji używać nagłówka Cache-Control.

Tagi META HTTP-EQUIV

Strony HTML zezwalają na stosowanie tagu META w specjalnej postaci HTTP-EQUIV, określającej wybrane nagłówki HTTP wewnątrz dokumentu HTML. Poniżej podano krótki przykład strony HTML używającej obu nagłówków: Pragma: no-cache oraz Expires: -1:
<HTML><HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD><BODY>
</BODY>
</HTML>
Nagłówek Pragma: no-cache uniemożliwia buforowanie tylko przy połączeniach bezpiecznych. Jeśli zostanie użyty na innej stronie, tag META Pragma: no-cache jest interpretowany tak samo jak nagłówek Expires: -1. Strona będzie buforowana, ale oznaczona jako wygasająca natychmiast.

Tagi META Cache-Control HTTP-EQUIV są ignorowane i ich stosowanie nie przynosi efektu w programie Internet Explorer w wersjach 4 lub 5. Aby używać nagłówka Cache-Control, należy go określić z użyciem nagłówka HTTP w sposób opisany powyżej w sekcji Nagłówek Cache-Control.

Należy pamiętać, że preferowane jest użycie standardowych nagłówków HTTP a nie tagów META. Tagi META zwykle muszą być umieszczane na początku sekcji HTML HEAD. Ponadto z tagiem Pragma HTTP-EQUIV META związany jest co najmniej jeden znany problem. Aby uzyskać dodatkowe informacje, zobacz następujący artykuł z bazy wiedzy Microsoft Knowledge Base:
222064 "Pragma: No-cache" Tag May Not Prevent Page from Being Cached
Gdy nagłówek Cache-Control ma zostać użyty na stronach innych niż ASP, może się okazać konieczne skorzystanie z odpowiednich opcji konfiguracji serwera w celu automatycznego dodawania tego nagłówka. Zajrzyj do dokumentacji serwera, aby uzyskać informacje o dodawaniu nagłówków HTTP do odpowiedzi serwera dla wybranego katalogu. Na przykład w programie IIS 4 wykonaj następujące kroki:
  • Wywołaj program Internet Services Manager.
  • Korzystając z komputera i drzewa usług otwórz domyślny serwer sieci Web (lub wybrany serwer sieci Web) i odszukaj katalog zawierający treść wymagającą użycia nagłówka Cache-Control.
  • Wyświetl okno Properties dla tego katalogu.
  • Wybierz kartę HTTP Headers.
  • Kliknij przycisk Add w grupie Custom HTTP Headers i dodaj „Cache-Control” jako nazwę nagłówka i „no-cache” jako wartość nagłówka.
Należy pamiętać, że używanie tego nagłówka globalnie na całym serwerze sieci Web nie jest zalecane. Należy ograniczyć użycie go do zawartości, która zdecydowanie nie może być buforowana na komputerach klientów. Jeśli zastosowano techniki wymienione w tym artykule i nadal występują problemy z buforowaniem i programem Internet Explorer, przed skontaktowaniem się z pomocą techniczną firmy Microsoft w celu uzyskania pomocy, przejrzyj dokładnie poniższą listę kontrolną:
  • Czy używasz nagłówka Cache-Control z właściwością ASP „Response.CacheControl” czy przez zwrócony nagłówek HTTP? To jedyny pewny sposób uniemożliwienia buforowania w programie Internet Explorer.
  • Czy używasz programu Internet Explorer 4.01 z dodatkiem Service Pack 2 lub nowszym? Nie można uniemożliwić buforowania we wcześniejszych wersjach przeglądarki.
  • Czy dokładnie sprawdzono, że na serwerze sieci Web włączono HTTP 1.1 i że serwer zwraca odpowiedzi HTTP 1.1 do programu Internet Explorer? W odpowiedziach HTTP 1.0 nagłówki Cache-Control są nieprawidłowe.
  • Jeśli po stronie serwera używasz interfejsów CGI/ISAPI/Servlets, to czy dokładnie zachowana została specyfikacja HTTP 1.1, zwłaszcza przy zakończeniu CRLF nagłówków HTTP? W celu zwiększenia wydajności, program Internet Explorer zwykle pomija odpowiedzi niezgodne ze specyfikacją HTTP 1.1. W wyniku tego mogą być ignorowane nagłówki oraz wyświetlane komunikaty o nieoczekiwanych błędach serwera.
  • Czy nie ma błędów pisowni w nagłówkach HTTP?

Materiały referencyjne

Aby uzyskać więcej informacji, zobacz następujące artykuły z bazy wiedzy Microsoft Knowledge Base:
189409 INFO: Controlling the Caching of Web Pages with IIS 4.0

165150 How to Use Pragma: No-cache with IIS and IE
Zobacz też Hypertext Transfer Protocol -- HTTP/1.1 -- Draft Revision 5 .

Właściwości

Numer ID artykułu: 234067 - Ostatnia weryfikacja: 19 września 2003 - Weryfikacja: 2.2
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Internet Explorer 4.0 (128-bitowy)
  • 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
Słowa kluczowe: 
kbcaching kbfaq kbgrpdsinet kbhowto kbie400 kbie401 kbie401sp1 kbie401sp2 kbie500 kbie550 kbiefaq KB234067
Zastrzeżenie dotyczące artykułów z bazy wiedzy o produktach wycofanych
Ten artykuł dotyczy produktów, dla których firma Microsoft nie oferuje już pomocy technicznej. Dlatego jest on oferowany w obecnej wersji i nie będzie już aktualizowany.

Przekaż opinię

 

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