2009-02-11 16 views
13

Jak mogę sprawdzić plik javascript w pamięci podręcznej użytkownika. Jeśli odświeży stronę lub odwiedzi witrynę po pewnym czasie. Nie muszę ponownie pobierać tego pliku js. Czy pliki js zostaną wyczyszczone po zamknięciu witryny.Sprawdź pamięć podręczną przeglądarki dla pliku js.

+0

To pytanie jest głęboko zagmatwane do punktu bezużyteczności, i nie mam pojęcia, dlaczego to się stało. Najpierw mówisz, nie wyjaśniając dlaczego, że chcesz sprawdzić, czy przeglądarka ma buforowany plik (co jest możliwe, ale tylko poprzez ataki czasowe, nie ma dla niego API). Następnie mówisz, że chcesz to wiedzieć, aby uniknąć ponownego pobierania pliku, ale przeglądarka * obsługuje tę logikę *, jeśli dasz mu odpowiednie nagłówki, więc ta motywacja wydaje się nie mieć sensu. Na koniec pytasz o inne niezwiązane i niejasne pytanie o to, czy pliki js "zostaną oczyszczone" po zamknięciu witryny. Huh? –

+0

@MarkAmery Czy możesz połączyć wyjaśnienie czeku "czas ataku"? – setec

+1

@setec Oto artykuł naukowy na ten temat sprzed 15 lat: http://sip.cs.princeton.edu/pub/webtiming.pdf. Nie zostało to naprawione od tego czasu, mimo że jest to luka w prywatności. Wersja tl; dr to: zrób '' tag z atrybutami 'onload' i' onerror' wskazujący na URL, który cię interesuje, i użyj JavaScript, aby określić, ile czasu zajmuje wywołanie jednej z funkcji obsługi. Jeśli minie kilka milisekund, użytkownik miał buforowany docelowy adres URL. –

Odpowiedz

11

To, czy plik javascript jest zapisany w pamięci podręcznej, zależy od konfiguracji serwera, konfiguracji przeglądarki użytkownika oraz konfiguracji serwerów proxy HTTP między serwerem a użytkownikiem. Jedynym bitem, który możesz kontrolować, jest konfiguracja twojego serwera.

Jeśli chcesz uzyskać najlepszą możliwość buforowania javascript, serwer musi wysyłać odpowiednie nagłówki HTTP z plikiem javascript. Dokładnie to, jak to zrobisz, zależy od tego, z jakiego serwera WWW korzystasz.

Oto kilka linków, które mogą pomóc:

Apache - http://httpd.apache.org/docs/2.0/mod/mod_expires.html

IIS - http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0fc16fe7-be45-4033-a5aa-d7fda3c993ff.mspx?mfr=true

4

Przeglądarka automatycznie dbać o to, co ma w jego własnej pamięci podręcznej. Istnieją jednak różne mechanizmy, które można wykorzystać do jej kontrolowania.

patrzeć w różnych nagłówków buforowania HTTP, takich jak:

  • Last-Modified
  • Wygasa
  • ETag

Nagłówek Expires jest najważniejszym z nich, jeśli chodzi do buforowania po stronie klienta. Jeśli ustawisz przyszły nagłówek Expires na przyszłość (np. 10 lat), przeglądarka nie będzie (teoretycznie) zwracać się do serwera ponownie dla tego pliku. Oczywiście potrzebna jest metoda zmiany nazwy pliku, gdy zmieni się zawartość pliku. Większość osób zarządza tym, dodając numer kompilacji do ścieżki pliku.

2

Przeglądarka zajmie się buforowaniem.

Gdy pamięć podręczna zostanie opróżniona, zależy częściowo od ustawień przeglądarki i częściowo od wysyłanych nagłówków. Jeśli ustawisz nagłówek Expires, przeglądarka nie powinna ponownie żądać pliku, dopóki nie wygasnie. Czytanie o numerze HTTP Headers może ci pomóc.

Powiązane problemy