2012-08-05 26 views
11

Często dochodzę do tego problemu, gdy niektórzy użytkownicy mają uszkodzoną pamięć podręczną aplikacji (HTML 5).Czyszczenie i aktualizowanie pamięci podręcznej aplikacji html5 za pośrednictwem javascript

Aktualizuję plik manifestu za każdym razem, gdy pojawia się nowe wydanie, ale czasami niektórzy użytkownicy otrzymują uszkodzoną pamięć podręczną aplikacji.

W takim przypadku chcę w pełni wyjaśnić, co jest w ich pamięci podręcznej aplikacji i załadować wszystkie świeże treści z serwera.

Czy istnieje sposób na to, używając Javascript?

+0

Czy obejrzałeś ten post? http://stackoverflow.com/questions/1011605/clear-the-cache-in-javascript lub ten: http://stackoverflow.com/questions/8155064/how-to-programmatically-empty-browser-cache –

+0

, więc nie możemy również zaktualizować wersji cache aplikacji HTML 5? – Tushar

+0

Zobacz moją odpowiedź poniżej –

Odpowiedz

13

Według poniższego artykułu o

http://www.w3schools.com/html5/html5_app_cache.asp

Istnieją trzy sposoby na wich cache aplikacji zostaną zresetowane, są to:

  1. Użytkownik czyści pamięć podręczną przeglądarki
  2. Plik manifestu został zmodyfikowany
  3. Pamięć podręczna aplikacji jest programowo aktualizowana

Więcej informacji na temat programowego aktualizowania pamięci podręcznej aplikacji można znaleźć tutaj:

http://www.html5rocks.com/en/tutorials/appcache/beginner/

Wygląda to mniej więcej tak:

var appCache = window.applicationCache; 

appCache.update(); //this will attempt to update the users cache and changes the application cache status to 'UPDATEREADY'. 

if (appCache.status == window.applicationCache.UPDATEREADY) { 
    appCache.swapCache(); //replaces the old cache with the new one. 
} 
+8

Nie używaj w3schools jako odniesienia ... [w3fools] (http://w3fools.com) – Andreas

+0

Nadal mam ten sam problem, myślę, ponieważ plik manifestu nie został skutecznie zmieniony. W ten sposób przechowywana treść nie jest aktualizowana. Tylko plik manifestu zostanie ponownie pobrany. – Tushar

+2

@Andreas to tylko jedna z wielu stron, które udostępniają te informacje i ich poprawność. To może być Twój problem, pamięć podręczna nie zostanie wyczyszczona, jeśli nie zastosujesz się do jednego z powyższych warunków. –

7

ten jest dość stary, ale jak widzę Błędna odpowiedź jest przegłosowana, miałem ochotę dać wskazówkę ...

Jeśli ktoś ma problem z lo Oking na spec, widać, że nie ma sposobu, aby kod zmusił przeglądarkę do przeładowania pamięci podręcznej, chyba że jest zmiana w manifeście, i wtedy "appCache.status == window.applicationCache.UPDATEREADY" jest prawdą.

Spójrz tutaj http://www.w3.org/TR/2011/WD-html5-20110525/offline.html

„updateready Środki wymienione w manifeście zostały niedawno redownloaded, a skrypt można użyć swapCache(), aby przełączyć się do nowej pamięci podręcznej.”

Czytając to uważnie, okazuje się, że applicationCache osiąga ten status, gdy zasoby, które właśnie pobrano ... to jest ... poprzednie zdarzenie "pobierania" wystąpiło ... a poprzednio to "sprawdzanie" "...

Powiązane problemy