2012-08-24 18 views
14

Grałem z plikiem manifestu pamięci podręcznej i próbowałem go zatrzymać buforowanie strony, która została zadeklarowana.HTML5 Offline Manifest Zatrzymaj buforowanie strony To jest zadeklarowane na

Od HTML5 Rocks

dowolnej strony użytkownik nawiguje do tego to oczywisty będzie domyślnie dodawane do pamięci podręcznej aplikacji

Ace. Chcę, aby plik manifestu przechowywał w pamięci podręcznej określone artefakty, z których jeden jest wersją offline mojego kodu HTML strony pojedynczej aplikacji, ale NIE umożliwia buforowania wersji online.

+0

Wciąż jestem trochę nowy w HTML5, ale jestem zaskoczony, że nie ma dobrze zdefiniowanego sposobu zapobiegania buforowaniu strony, w tym manifestu. –

+0

Tak, ja też. Wolałbym, żeby plik manifestu miał większy wpływ, więc tylko to, co zadeklarujesz, zostanie zbuforowane. Nie powinien być powiązany ze stroną. To po prostu ukryta funkcjonalność. – Greg

+0

Moja pierwsza myśl to "Dodaj to do NETWORK: sekcja", ale po niektórych testach to nie działa (przynajmniej w IE - przestałem testować, gdy tylko zgłosiłem jeden przypadek, kiedy to nie zadziałało). Jest to, moim zdaniem, po prostu nieprawda - coś, co jest wyraźnie zadeklarowane, powinno zawsze przesłonić domyślne zachowanie. Nadal jestem bardzo niepewny, jeśli chodzi o używanie rzeczy offline, z powodu takich problemów. – Morvael

Odpowiedz

17

Oto jak rozwiązałem problem. Mój plik manifestu

CACHE MANIFEST 
# Version 0.1 

CACHE: 
# Minimised Styles 
/css/style.0.1.min.css 

# Minimised JavaScript 
/js/script.0.1.min.js 

FALLBACK: 
//offline.html 

NETWORK: 
* 

Uwaga że wszystko idzie do mydomain.com/ trybie offline trafi teraz do /offline.html (z cache)

Teraz, jak buforować tylko co w pliku manifestu, bez uwzględniania strony internetowej pod adresem mydomain.com/.

Umieść następujący iframe u dołu strony na mydomain.com/

<iframe src="/offline.html" style="display: none;"></iframe> 

I umieścić manifest="myapp.appcache" w offline.html.

Oznacza to, że po załadowaniu mydomain.com/, to nigdy nie zostanie zbuforowane (ponieważ nie ma atrybutu manifestu na stronie). Następnie przeglądarka przechodzi do trybu offline.html za pośrednictwem elementu iframe, a wszystko inne, co chcesz, buforować, jest dodawane za pomocą instrukcji w pliku manifestu, w tym strony offline.html, z powodu obecności atrybutu HTML.

Jedyny narzut, jaki widzę, jest podczas ładowania pierwszej strony, element iframe wykona dodatkowe żądanie HTTP, ale po jego buforowaniu pobierze go z pamięci podręcznej, więc nie będzie to ogromny problem.

+0

Wygląda na to, że działa w Chrome, ale wydaje mi się, że nie można go uruchomić w FireFox v14.0.1. Ciągle pobiera wszystko z sieci dla głównego pliku index.htm (który nie ma atrybutu manifestu - ale ma element iframe z plikiem offline.htm z manifestem). – patorjk

+0

Wydaje się, że pracujesz dla mnie ... – Greg

+0

Po aktualizacji do FF 15 zaczęło działać dla mnie. Nie jestem pewien, czy coś jest nie tak z moją konfiguracją, ale teraz działa. – patorjk