2012-09-20 11 views
7

Mam cache oczywisty z komentarzem w nimHTML5 App Cache: Manifest ist zaktualizowane, ale pliki są pobierane z pamięć podręczną aplikacji jeszcze raz

# Version 3.2 

aby zaktualizować wszystkie App ja po prostu zmienić numer wersji. To działa, ale:

Kiedy zaktualizować manifest, wszystko jest poprawnie aktualizowany (nowa skrzynka wypełniona jest) ale same pliki są brane jeszcze raz od (starego) pamięci podręcznej. kiedy przeładowuję dwa razy, wszystko jest aktualizowane. Czy to zachowanie jest poprawne? Korzystanie z Chrome 21.

Dzięki

Odpowiedz

16

Tak, to jest obecny "poprawne" zachowanie. To, co się dzieje:

Po prostu wprowadził zmiany do pliku manifestu i odświeżyć przeglądarkę, to jest to, co się dzieje (zakładając, że jesteś w trybie online)

  • przeglądarce pierwsze ładunki z powrotem wszystkie pliki w pamięci podręcznej
  • następnie sprawdzenie przeglądarka online dla Twojego pliku manifestu
  • wykryje, że plik manifestu nie zmieniło, to następnie postępować, aby pobrać nowe pliki
  • jednak pamiętać, w tym czasie, nadal będzie patrzył na twoje "stare pliki", ponieważ przeglądarka załadowaniu stare pliki zanim będzie online, aby pobrać „nowe pliki”
  • jeśli w tym momencie, jeśli trafisz odświeżyć ponownie (2. raz), należy uzyskać „nowe pliki”

ten jest obecnie standardowym zachowaniem. Niektórzy umieszczają niektóre programy obsługi zdarzeń, aby zachęcić użytkownika do wykonania kolejnego odświeżenia (po pierwszym odświeżeniu).

Osobiście uważam, że przeglądarka powinna być odpowiedzialna za ostrzeżenie użytkownika o konieczności kolejnego odświeżenia po zakończeniu pobierania nowych plików, ale prawo obecnie większość osób umieszcza w procedurach obsługi zdarzeń z "window.applicationCache", aby uruchamiać zdarzenia, aby pomóc w zarządzaniu tym.

Aby spojrzeć na przykład za pomocą window.applicationCache, przejdź tutaj: http://www.html5rocks.com/en/tutorials/appcache/beginner/

to w sekcji „Aktualizowanie cache”.

1

Możliwe jest natychmiast zamienić cache jak opisano here:

function updateSite(event) { 
    window.applicationCache.swapCache(); 
} 
window.applicationCache.addEventListener('updateready', updateSite, false); 
Powiązane problemy