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.
Wciąż jestem trochę nowy w HTML5, ale jestem zaskoczony, że nie ma dobrze zdefiniowanego sposobu zapobiegania buforowaniu strony, w tym manifestu. –
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
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