問題:
ブラウザが「オフラインで作業」に設定されている場合、applicationCache(オフラインキャッシュ)から提供されるフォールバックリソースを取得できません。
環境の詳細:
- Windows764ビットSP1
- IE10ver。10.0.9200.16438
- Firefoxver。18.0.1
- IIS ver 7.5.7600.16385
- .manifestMIMEタイプはtext/cache-manifestです
マニフェストの詳細:
フォールバック:/ AppCacheDemo / Home / CarNew / Sandbox / Car / AppCacheDemo
オフラインモードのトリガー方法:
- IISが停止しました
- [ファイル]メニューの[オフラインで作業]メニュー項目が選択されている
デモアプリケーションの詳細:
添付のデモは3ページで構成されています。
マニフェストファイル属性を持つ唯一のページであるランディングページ(/ AppCacheDemo / Home / Index)。マニフェスト属性を持つ結果として、それは自動的にapplicationCacheに配置されます。
ページのオンラインバージョンと対応するオフラインバージョン、それぞれ/ AppCacheDemo / Home / CarNew、/ AppCacheDemo / Home/CarNewOffline。
期待される機能:
ブラウザは、/ AppCacheDemo / Home / Indexを要求するときにマニフェスト属性の存在を検出し、マニフェストにリストされているすべてのリソースをダウンロードします。
ユーザーが/AppCacheDemo/ Home / Indexに存在するリンクをクリックすると、/ AppCacheDemo / Home/CarNewにリダイレクトされます。
ブラウザがインターネット接続を検出すると、/ AppCacheDemo / Home/CarNewがユーザーに提供されます。インターネット接続が検出されない場合、/ AppCacheDemo / Home / CarNewへの要求が行われると、applicationCacheから/ AppCacheDemo / Home/CarNewOfflineが提供されます。
Firefoxで再現する手順(実際の機能):
- FFを開き、キャッシュをクリアします(alt + ctrl + delete)。
- リクエストについて:キャッシュa。ディスク/オフラインキャッシュにリストされている「エントリ数」が両方ともゼロとしてリストされていることを確認します。
- 新しいタブを1つ作成し、/ AppCacheDemo / Home/Indexをリクエストします
- Firefoxがオフラインデータを保存できるようにするには、[許可]ボタンをクリックします。
- about:cacheに戻り、ページを更新します。a。ディスクキャッシュエントリの数は3としてリストする必要があります(環境によってはさらに多くなる場合があります)。オフラインキャッシュエントリの数は3と表示されている必要があります。
- [ディスクキャッシュ]セクションの下にある[キャッシュエントリの一覧表示]リンクをクリックして(または新しいタブでリンクを開いて)、/ AppCacheDemo / Home/CarNewを指すエントリがないことを確認します。
- / AppCacheDemo / Home / Indexが開いているタブに戻り、「新しい車のリンクを作成しましょう」をクリックします。/ AppCacheDemo / Home/CarNewにリダイレクトする必要があります
- about:cache?device = diskに戻り、/ AppCacheDemo / Home / CarNewに新しいエントリが存在し、そのフェッチカウントが1としてリストされていることに注意してください。
- IISを停止します
- ファイルメニューから「オフライン作業」メニュー項目を選択します
- 現在のページを更新します(/ AppCacheDemo / Home / CarNew)
- about:cache?device = diskに戻り、/ AppCacheDemo / Home / CarNewに新しいエントリが存在し、そのフェッチカウントが2に表示されていることを確認します。
/ AppCacheDemo / Home / CarNewのabout:cache?device = diskにリストされている情報に基づくと、Firefoxはそのバージョンのページをユーザーに提供しているようです。/ AppCacheDemo / Home / CarNewが要求され、インターネット接続が存在しない場合に/ AppCacheDemo / Home / CarNewOfflineを提供するというフォールバックルールがマニフェストに定義されているため、代わりに/ AppCacheDemo / Home/CarNewOfflineがapplicationCacheから提供されることを期待していました。代わりにapplicationCache。
Firefoxで再現する手順(期待される機能):
以下の手順を実行する前に、「オフラインで作業」の選択を解除することを忘れないでください。
- FFを開き、キャッシュをクリアします(alt + ctrl + delete)。
- リクエストについて:キャッシュa。ディスク/オフラインキャッシュにリストされている「エントリ数」が両方ともゼロとしてリストされていることを確認します。
- 新しいタブを1つ作成し、/ AppCacheDemo / Home/Indexをリクエストします
- Firefoxがオフラインデータを保存できるようにするには、[許可]ボタンをクリックします。
- about:cacheに戻り、ページを更新します。a。ディスクキャッシュエントリの数は3としてリストされている必要があります(環境によってはさらに多くなる場合があります)。a。オフラインキャッシュエントリの数は3と表示されている必要があります。
- [ディスクキャッシュ]セクションの下にある[キャッシュエントリの一覧表示]リンクをクリックして(または新しいタブでリンクを開いて)、/ AppCacheDemo / Home/CarNewを指すエントリがないことを確認します。
- IISを停止します
- ファイルメニューから「オフライン作業」メニュー項目を選択します
- アドレスバーに/AppCacheDemo/ Home/CarNewと入力します。a。/ AppCacheDemo / Home/CarNewOfflineにリダイレクトする必要があります。アドレスバーのURLは引き続き/AppCacheDemo/ Home / CarNewである必要がありますが、ドキュメントのコンテンツは/ AppCacheDemo / Home/CarNewOfflineである必要があります。
- 新しいタブで、about:cache?device = diskをリクエストし、/ AppCacheDemo / Home/CarNewに全体が存在しないことを確認します。
/ AppCacheDemo / Home / CarNewがディスクキャッシュに存在しなかったため、FFはマニフェストで定義されたフォールバックルールを尊重し、代わりに/ AppCacheDemo / Home/CarNewOfflineを提供しました。もし私が
IEでのテスト:
about:cacheに移動することを除いて、上記の手順は多かれ少なかれ従うことができます。違いは、IEが「オフラインで作業」に設定されていて/ AppCacheDemo / Home / CarNewのリクエストが行われると、IEは「このページを表示できません」というメッセージのあるページを表示することです。/ AppCacheDemo / Home / CarNewOfflineが直接要求された場合、IEはページを提供します。マニフェストでフォールバックルールが指定されているため、/ AppCacheDemo / Home / CarNewOfflineが提供されることを期待しますが、そうではありません。
Safari / Chromeでのテスト:
Safari / Chromeには「オフラインで作業」メニュー項目がないため、navigator.onLineがfalseとして報告される前に実行する必要のある追加の手順がいくつかあります。ブラウザを完全に切断された状態にするには、CAT 5ケーブルを物理的に取り外し、VPNから切断する必要があります。ただし、フォールバックルールは尊重され、インターネット接続が利用できない/ AppCacheDemo / Home / CarNewの場合、/ AppCacheDemo / Home/CarNewOfflineが提供されます。
AppCacheDemoプロジェクト(IISを使用するように構成されたMicrosoft MVC 4 Webアプリケーション):