ASP MVC 3のWebサイトでHTML 5オフラインアプリケーションキャッシュを使用しようとしています。私が得る問題は、オフラインモードでページに移動しようとすると、 が動作しません。HTML 5のキャッシュマニフェストもajaxリクエストで動作するはずですか?
マニフェストファイルを動的に生成できるようにアクションを使用しています。ビューでは、 Resonse.ContentType = "text/cache-manifest"と指定しています。
IISでローカルにアプリケーションをホストしていますので、http://192.168.55.127/mywebsite/を使用してアクセスしています。
これは私が使用しているマニフェストビューです。それはかみそりビューエンジンを使用して、私は何が間違っているかを把握しようとしている間に少し乱雑です(ハードコードされたURLなど) です。罰金のようです
http://192.168.55.127/mywebsite/scripts/Libs/jQuery.js
http://192.168.55.127/mywebsite/pages/home.htm
:
@{
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:
*
これは、次のようなパスになります。
私はあまりにも完全なパスを使用してマニフェストファイルを参照しています
<html manifest="http://192.168.55.127/mywebsite/manifest">
OKであるように思われ、私はクロームでサイトアップをロードし、デベロッパーコンソールを観察するとき、すべてをキャッシュする を表示されますエラーを投げることなくファイルまたhttp://192.168.55.127/mywebsite/manifest に移動すると、マニフェストが表示されます。
ウェブサイトは通常のナビゲーションを使用せず、代わりにハッシュフラグメントを使用してナビゲートします。そのため、ホームに移動するにはmaster.htm#homeを使用するか、optionsにはmaster.html#optionsを使用します。このハッシュ変更はjavascriptによって取得され、ajaxを使用してマスターのdivコンテナにページをロードします。具体的には、jQueryの 'load'メソッドを使用してこれを行います。
オフラインモードでないときはすべて正常に動作し、ナビゲートするときにクロムのネットワークタブを確認すると、要求URLは正確であり、マニフェストファイルにリストされているURLと同じです。私が考えることができるのは、オフラインモードがAjaxリクエストでは機能しないということだけですが、同じように動作するという印象を受けました。
FireFox(バージョン9.0)を使用してオフラインモードをテストしています。すべての履歴を消去し、Webサイトのホームページを参照し、オフラインモードを有効にしてから、オプションページに移動します。ファイアウォールでは、オプションページの正しいURLをGETリクエストしていますが、それは返されません。エラーでもありません。ローディングホイール(ファイアバグのネットタブにあるリクエストの横にある)は、ロード中のように回転し続けます。 Opera 11.60でも試しましたが(オフラインモードもあります)、同じことが起こります。
私が間違っていることについて、どんな考えがありますか?マニフェストがどのように機能すべきか、わかりやすかったり、誤解されたりしましたか?どんな提案も感謝します。