Czy istnieje sposób wyłączenia buforowania przeglądarki klienta dla określonych stron internetowych?

9

To jest pytanie agnostyczne dotyczące przeglądarki, ale testujemy z IE9.

Jedna z aplikacji internetowych, które odwiedzają nasi użytkownicy, jest losowo buforowana, a zmiany nie pojawiają się, kiedy powinny. Żadna inna witryna nie ma tego problemu i współpracowaliśmy ze sprzedawcą, który twierdzi, że nie dzieje się to z nikim innym. Jeśli użyjemy paska narzędzi programisty i wybierzemy „wymuś odświeżenie z serwera”, wszystko aktualizuje się poprawnie.

Zamiast naprawdę rozwiązać problem, naszym celem jest obejście go przez wyłączenie pamięci podręcznej dla tej konkretnej witryny. Nie wiemy jednak jak.

GollyJer
źródło

Odpowiedzi:

8

Jedynym właściwym sposobem wyłączenia buforowania przeglądarki są nagłówki HTTP z samej aplikacji internetowej. Sam nagłówek HTTP 1.1 „Kontrola pamięci podręcznej” powinien wystarczyć dla każdej przeglądarki po 2000 roku. Ale dla dodatkowej ochrony serwer może jednocześnie wysyłać nagłówki HTTP 1.1 „Cache-Control” i HTTP 1.0 „Expires” .

Hack'ish, ale czasami postrzegany sposób obsługi unieważnienia pamięci podręcznej to ciąg „cachebuster” w adresach URL z serwera. Bufor pamięci podręcznej jest często oparty na znacznikach czasu i jest dodawany jako kwerenda do każdego LINKU HTML, aby adres URL był unikalny i używany tylko raz. Coś jak http://example.org/filename.html?cb=<timestamp+random_value>. Jest to brzydkie i nic nie robi, nagłówki HTTP nie radzą sobie znacznie lepiej. Ale może być użyty jako hack dla ograniczonej grupy odbiorców (fx w intranecie) lub jako dodatkowa warstwa ochrony wraz z odpowiednimi nagłówkami HTTP.

AFAIK nie ma możliwości selektywnego wyłączenia buforowania dla pojedynczej witryny tylko z poziomu Internet Explorera. Jednym (cholernie skomplikowanym) rozwiązaniem może być zainstalowanie pamięci podręcznej Varnish jako pośredniej pamięci podręcznej w sieci LAN, ustawienie Internet Explorera na używanie Varnish jako proxy HTTP oraz użycie języka VCL na Varnish, aby ponownie napisać nagłówki HTTP tylko dla tej konkretnej strony.

Szczerze mówiąc, myślę, że twój sprzedawca popełnia tutaj błąd. Sugerowałbym zainstalowanie Fiddler2 dla IE lub Firebug dla Firefoxa i sprawdzenie rzeczywistych nagłówków HTTP wysyłanych przez aplikację internetową. Skoreluj to z samouczkiem buforowania Marka Nottinghama, do którego już wcześniej odniosłem link - domyślam się, że nagłówki zezwalają na buforowanie, a przynajmniej nie zabraniają buforowania.

Jesper Mortensen
źródło
0

Upewnij się, że ustawiłeś odpowiednie nagłówki wygasające. Jeśli czas upłynie w przeszłości, zawartość nie będzie buforowana. Sprawdź godzinę / datę na stacji roboczej, na której działa IS9. Zobacz także: http://www.mnot.net/cache_docs/

Mircea Vutcovici
źródło
0

Jeśli nie możesz zmodyfikować zawartości omawianej witryny, możesz użyć serwera proxy do zmodyfikowania treści w przeglądarce. Umożliwi to zmianę nagłówków wygasających.

JeffG
źródło
0

Jeśli witryna umożliwia połączenie przez HTTPS, w zależności od przeglądarki można wyłączyć buforowanie zaszyfrowanych stron.

W IE można to zrobić w następujący sposób:

Możesz dwukrotnie sprawdzić ustawienia IE w Opcje internetowe-> Zaawansowane-> Bezpieczeństwo-> Nie zapisuj zaszyfrowanych stron na dysku.

JeffG
źródło
Poprosił o rozwiązanie agnostyczne dla przeglądarki.
Mircea Vutcovici
1
@Mircea To jest niezależne od przeglądarki rozwiązanie. Właśnie podałem darmowy przykład za pomocą IE. Wiele innych przeglądarek ma opcję wyłączenia buforowania SSL, ale ustawienia są w różnych miejscach.
JeffG,
0
<meta http-equiv="PRAGMA" content="NO-CACHE">

http://www.zann-marketing.com/developer/20051018/stop-browser-caching-using-meta-tags.html

Możesz rozważyć użycie losowych kluczy na pasku adresu, zapobiegnie to również buforowaniu w przeglądarce.

Richard
źródło
To by działało, gdyby GollyJer miał możliwość zmodyfikowania strony. Rozumiem, że nie opiera się na swoim pytaniu.
JeffG,
Dokładnie mówiąc, „losowe klucze” nie zapobiegają skutecznie buforowaniu. Przeglądarka i pośrednie pamięci podręczne mogą nadal przechowywać odpowiedź na dysku. Ale przy następnym żądaniu tego samego pliku losowy klucz zmieni adres URL, dlatego wersja buforowana na dysku nie będzie używana. Nowa reprezentacja zostanie pobrana z serwera i prawdopodobnie buforowana na dysk. Ponadto tag META PRAGMA jest stary i nie należy go używać - zaleca się używanie nagłówków HTTP Expires i Cache-Control.
Jesper Mortensen