2013-05-31 32 views
8

私は、Windows 8 ProfessionalのタブレットとIE10で内部的に使用される非常に大きな(約2ギガバイトの)WebアプリケーションのHTML5アプリケーションキャッシュを作成しようとしています。何かがキャッシングプロセスを失敗させる原因になっていますが、私が見つけることができる唯一のデバッグ情報は、単に "AppCache Fatal Error"というF12コンソールです。IE10でAppCacheの致命的なエラーの原因を調べるにはどうすればよいですか?

私は、エラーハンドラを作り、デバッグしようとした:

if (window.applicationCache) 
{ 
    var oAppCache = window.applicationCache; 
    oAppCache.onerror = function(e) { 
     alert(e); // Outputs [object Event], I use this row as a breakpoint target 
    }; 
} 

デバッガで見たときしかし、eは有用な情報が含まれていません。

ウェブサーバのログによれば、エラーの前に要求された最後のファイルは、他の多くのものと同様にJPEGです。何が原因でエラーが発生したかについての手がかりを探すべきですか?ページはFirefox上で正常にキャッシュされます。

答えて

9

しばらくの間、同じ問題に対して頭を下ろしてください。私はエラーが発生していた行を解決するまで、私のマニフェストをバイナリ・チョップしました。それは、のキャッシュ・エントリ(マニフェストの1000番目の行だけではありません)の1000番目の行です。

IE10のキャッシュに入れることができるアイテムの数に厳しい制限があるようです。私は数分の検索の後でこれがどこに文書化されているかわかりませんでしたが、より永続的な人がそれを辿るかもしれないことを思い出します。

1000番目のCACHEアイテムの内容が何であるかは関係ありません。 IEはキャッシュのダウンロードを開始することから完全にあなたを防ぎます。セキュリティ上の理由から、誰かがキャッシュに氾濫するのを止めたり、何千ものエントリを持つマニフェストをページに挿入してサイトにDoSを適用したりすることが制限されている可能性があります。

多分あなたのアプリを別々のキャッシュを使って(サブドメインよりも)チャンクに分割してみてください。チャンクでダウンロードされた方が優れたユーザーエクスペリエンスを得るためには、一連の小さなキャッシュの間でリダイレクトすることによって、常に「インストール」を自動化できます。

+1

サブドメインの分割は素晴らしいアイデアですが、サイトが単一ページであるため実装が難しいでしょう。 1000キャッシュエントリの限界のほかに、50MBの制限があるように見えますが、これは私たちの場合の犯人のようです。とにかく巨大な動画ではないとすれば、1000アイテムの上限は私たちには噛まれてしまいます。この回答を受け入れることにします。ありがとう! – Kaivosukeltaja

+1

よく見つかる。 IE10の詳細は[こちら](http://technet.microsoft.com/en-us/library/jj891001.aspx)で、マニフェストの50MB制限と最大1000リソースを確認してください。 – Barrie

3

誰にでも役立つ場合は、このエラーを解決する別の方法を見つけました。

アプリケーションキャッシュを使用していて、cache.contentエントリが "Cache-Control:no-cache、no-store"に設定されているhtmlファイルのCache-Controlヘッダーを設定すると、このエラーが発生します。 Cache-Controlヘッダーのno-storeフラグを削除すると、このインスタンスの問題が解決されます。私はアプリケーションキャッシュをリソースのためだけに使用しようとしていましたが、HTMLページそのものではありませんでしたが、残念ながらそれは設計されたものではありません。

また、他のすべてのブラウザではcache.manifestファイルのno-storeフラグは無視されることに注意してください。IEは技術的にはちょっとしたペニシックであることを技術的にやっています。

5

私はIE(10)に問題がありました。AppCache Fatal Errorです。それはIEのマニフェストが適切なコンテンツタイプ、すなわち

Content-Type: text/cache-manifest 

クロムとFirefoxと同じように扱われる必要があることが判明します。

+1

これは私のための修正プログラムでした。 IISの場合、web.configの ''セクションに ''を追加してください。 – Seth

+0

これはまた、何らかの奇妙な理由のために、マウス・センター/離脱のエラーを引き起こしているようです – epelc

1

Internet Explorerのグループポリシーでは、キャッシュリソースリストサイズの制限が1000個に設定されています。これは、このポリシーを変更することで拡張できます。詳細は、hereの「最大アプリケーションキャッシュリソースリストサイズの設定」のパートを参照してください。

0

私の問題はIISが -Extensionを使用してContent-Typex-ms-manifestに設定したことです。だから私は、web.configファイルに次を追加しました - これはappcacheが今(のみHTTPで働いていた)、それは以前にはなかったHTTPS(SSL)で動作しますfatal error(IE 11)を解く:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <location path="." 
      inheritInChildApplications="false"> 
    <system.webServer> 
... 
     <staticContent> 
     <remove fileExtension=".manifest"/> 
     <mimeMap fileExtension=".manifest" mimeType="text/cache-manifest"/> 
     </staticContent> 
... 
    </system.webServer> 
    </location> 
</configuration> 
関連する問題