Próbuję uzyskać pamięć podręczną aplikacji HTML 5 offline współpracującą z witryną ASP MVC 3. Pojawia się problem polegający na tym, że podczas próby przejścia do strony w trybie offline, , to nie działa.Czy manifest HTML cache powinien działać również z żądaniami ajax?
Używam działania dla pliku manifestu, aby można było go dynamicznie generować, a w widoku określam Resonse.ContentType = "text/cache-manifest".
Hostowałem aplikację lokalnie w IIS, więc używam http://192.168.55.127/mywebsite/, aby uzyskać do niej dostęp.
To jest widok manifestu, którego używam. Używa mechanizmu podglądu maszynki do golenia i jest trochę brudny (twardy adres URL itp.) , podczas gdy ja próbuję dowiedzieć się, co jest nie tak.
@{
Layout = null;
Response.ContentType = "text/cache-manifest";
}
CACHE MANIFEST
# Version: @ViewBag.Version
CACHE:
#Script Files
@foreach(var jsFile in Url.GetJsFiles())
{
@string.Format("{0}{1}\r\n", "http://192.168.55.127", Url.Content(jsFile))
}
#Style Sheets
@foreach(var cssFile in Url.GetCssFiles())
{
@string.Format("{0}{1}\r\n", "http://192.168.55.127", Url.Content(cssFile))
}
#Images
@foreach(var imageFile in Url.GetImageFiles())
{
@string.Format("{0}{1}\r\n", "http://192.168.55.127", Url.Content(imageFile))
}
#HTML Pages
@string.Format("{0}{1}", "http://192.168.55.127", Url.Content("~/pages/master.htm"))
@string.Format("{0}{1}", "http://192.168.55.127", Url.Content("~/pages/home.htm"))
@string.Format("{0}{1}", "http://192.168.55.127", Url.Content("~/pages/options.htm"))
NETWORK:
*
Wynika to w ścieżkach, takie jak:
http://192.168.55.127/mywebsite/scripts/Libs/jQuery.js
http://192.168.55.127/mywebsite/pages/home.htm
, która wydaje się być dobre.
mam odwoływać plik manifestu przy użyciu pełnej ścieżki zbyt:
<html manifest="http://192.168.55.127/mywebsite/manifest">
który wydaje się być w porządku, a kiedy załadować Up strony w Chrome i obserwować konsoli programisty, wydaje buforować wszystko pliki bez wyrzucania błędów. Również jeśli przejdę na stronę http://192.168.55.127/mywebsite/manifest , wyświetli się manifest, tak jak się spodziewam.
Witryna nie używa normalnej nawigacji, zamiast tego porusza się za pomocą fragmentów haszujących - aby przejść do strony głównej, adres URL to master.htm # home lub w przypadku opcji będzie to master.html # options. Ta zmiana hash jest pobierana przez javascript i ładuje stronę do kontenera div w wzorzec za pomocą ajax, a dokładniej używa w tym celu metody "load" w jQuery.
Wszystko działa dobrze, gdy nie jest w trybie offline, a podczas przeglądania karty sieciowej w przeglądarce Chrome adres URL żądania jest poprawny i jest to ten sam adres URL, który jest wymieniony w pliku manifestu. Jedyne, co mogę myśleć to to, że tryb offline nie działa dla zapytania ajax, ale miałem wrażenie, że działa tak samo.
Testuję tryb offline za pomocą FireFox (wersja 9.0), usuwając całą historię, przeglądając stronę główną witryny, włączając tryb offline, a następnie próbując przejść do strony opcji. W firebug widzę żądanie GET dla poprawnego adresu URL strony z opcjami, ale nigdy się nie zwraca, nie ma nawet błędu. Koło ładujące (obok żądania w zakładce netto w firebugu) wciąż się obraca, jakby wciąż było ładowane. Próbowałem go również w Operze 11.60 (ponieważ ma to również tryb offline) i dzieje się tak samo.
Ktoś ma jakieś pomysły co do tego, co robię źle? Czy przeoczyłem coś oczywistego lub niezrozumiałego, w jaki sposób powinien działać manifest? Wszelkie sugestie zostaną docenione.