2013-03-01 6 views
9

私は、アプリケーションキャッシュと一緒に遊んとswapCache機能に問題が生じています。DOM例外エラー11()

は私が世界で最もシンプルなキャッシュマニフェストファイルを作成している:1回目のためのアプリケーションを実行する

CACHE MANIFEST 
# Timestamp: 2013-03-01 11:28:49 

CACHE: 
media/myImage.png 

NETWORK: 
* 

コンソールで私これを与える:

Creating Application Cache with manifest http://blah_blah/offline.appcache 
Application Cache Checking event 
Application Cache Downloading event 
Application Cache Progress event (0 of 1) http://blah_blah/media/myImage.png 
Application Cache Progress event (1 of 1) 
Application Cache Cached event 

をすべてうまく今のところ。それから私は、画像をスワップアウトし、マニフェストファイルにタイムスタンプを変更し、次を得る:applicationCache.swapCache()関数は、私のDOM例外11エラーを与えると呼ばれる

Adding master entry to Application Cache with manifest http://blah_blah/offline.appcache 
Application Cache Downloading event 
Application Cache Progress event (0 of 2) http://blah_blah/media/myImage.png 
Application Cache Progress event (1 of 2) http://blah_blah/Widget/?invoke=myWidgetFunctionName 
Application Cache Progress event (2 of 2) 
Application Cache UpdateReady event 

た時点で。すべて正しくウェブサーバ上で設定

MIMEタイプ。

誰もが任意のアイデアは/正しい方向に私を指すことができましたか? (私はオンラインすべての一般的なリンクappcacheものを読んでいると私は間違って何をやっている見ることができない)

ありがとう!

EDIT:

私は以下のコメントで述べたように、設定することが* .appcacheファイルのための私のWebサーバー上のヘッダがすぐに期限切れに満了し、私はまだ(DOM例外エラーを取得していますが、それが働いているようです! ?)。 Possible Fix for Offline App Cache INVALIDSTATEERR

...しかし、私はどのようにMIMEタイプのクライアント側を設定するか分かりません。私のgoogle-Fu skillzは私を捨てました。誰でも?

+0

このエラーは、時折/矛盾して解決を見つけることができません。もしあなたがそれを理解したら、聞くのが大好きです。 – captainclam

+0

* .appcacheファイルがすぐに期限切れになるようにWebサーバー上の有効期限ヘッダーを設定しましたが、appcacheが期待どおりに動作するようになりました。私は、しかし、まだそれが動作しているのか分からないので、swapCache呼び出しでDOM例外エラー11を取得しています! –

+0

あなたが投稿したリンクは、(text/cache-manifest appcacheを追加して '/ etc/mime.types'の私のために)あなたのapache設定にMIMEタイプを追加することを示唆しています。私はそれを行い、curl: 'Content-Type:text/cache-manifest'を使って、配信されたMIMEタイプをチェックしました。しかし、私は 'appcache.update()'または 'appcache.swapCache()'を呼び出すたびに同じエラーが出ます。私はまた、誰かがそれを理解しているのを聞くのが大好きだ... – koko

答えて

0

私はキャッチオールNETWORKのホワイトリストをコメントアウトしようとしているお勧めします。

NETWORK: 
# * 

*は、私は私の単純なWebアプリケーションのために今のところ、すべてのネットワークのエントリをコメントアウト

https://developer.mozilla.org/en-US/docs/HTML/Using_the_application_cache

によると、すべてのファイルのネットワークアクセスを必要とするように思われる、それがうまく動作します。

1

私は同じ問題がありました。しばらくの間、ブラウザがクロムでない場合はキャッシュを無効にしましたが、次にMIMEタイプを設定して再試行することにしました。 FirefoxがswapCache()を呼び出すと例外がスローされなくなり、リフレッシュプロセス全体が期待通りに機能するようになりました。 mime-typeは、リクエストがWebページからではなくブラウザから開始されるため、サーバー側に設定する必要があります。したがって、レスポンスの読み方を制御することはできません。ここには2つのオプションがあります。 ApacheやIISを使用している場合は、ココとして提案することができます。ルーティングを処理するフレームワークを使用していて、レスポンスへのURLのマッピング(レールやPython wsgiサーバーなど)を設定する場合は、通常、コンテンツタイプを手動で設定できます。ここで私はBottle.py(WSGIベース)を使用して、私のPythonアプリケーションで使用しています何の私のスニペットは次のとおりです。

# BEFORE 
@bottle.route(r"/<path:re:.+\.(manifest|appcache)>", auth=False) 
def serve_cache_manifest(path): 
    return bottle.static_file(path, SITE_DIR) 

# AFTER 
@bottle.route(r"/<path:re:.+\.(manifest|appcache)>", auth=False) 
def serve_cache_manifest(path): 
    return bottle.static_file(path, SITE_DIR, mimetype='text/cache-manifest') 

ボトルは、私が使用しています静的ファイルを返す処理するユーティリティ機能が付属しています。これは、MIMEタイプを設定するオプションのパラメータを持っています。

TL; DRご使用のサーバーの構成にMIMEタイプを追加することができない場合は(あなたが いずれかを持っている場合)、あなたはほとんど常に、サーバー側のコードでそれを設定することができます。