3

私はクライアント用の HTML アプリに取り組んでいます。アプリ フロント エンド全体は、1 つの HTML ファイル、1 つの Javascript ファイル、1 つの CSS ファイル (および jquery)、およびいくつかの画像で構成されます。サーバーには、AJAX を使用して呼び出される php スクリプトがいくつかありますが、それはインターネット接続が利用可能な場合のみです。接続が利用できない場合、サイトはローカルにキャッシュされたデータを (を使用してlocalStorage) 使用します。

サイトをオフラインで利用できるようにするために、HTML でキャッシュ マニフェストを宣言しています。私のHTMLは次のようになります。

<!DOCTYPE html>
<html manifest="cache.manifest.php" language="en">
...
</html>

cache.manifest.php出力は次のようになります。

CACHE MANIFEST
#VersionHash: 80b9345e6c39efbbe8431e394b014b4f

CACHE:
/css/ebot.css
/favicon.ico
/images/appicon.png
/images/list-arrow.png
/images/list-checkmark.png
/images/woman.png
/index.html
/js/jquery-1.8.3.min.js
/js/ebot.ls.js

NETWORK:
/emaillog.php
/getdata.php
/uploadlog.php

ここまでは順調ですね。現在、インターネット接続が利用可能なブラウザからサイトにアクセスしています。サイトがオフラインで使用するために情報を保存することを許可するかどうかを尋ねる小さな通知が表示されます - 許可します。設定を確認すると、サイトに 316K のデータが保存されていることがわかります。これはほぼ正しい値です。

ここで、インターネット接続をオフにしてアクセスしようとするhttp://www.mysite.com/index.htmlと、「インターネット接続が利用できません」というエラー メッセージが表示され (またはその程度のもの)、ページが表示されません。これは、開発マシン (firefox、safari、chrome) とクライアントの ipad (アプリは最終的には ipad で使用される) でテストした 3 つのブラウザーで発生しています。

ここで何が欠けていますか?私は何を間違っていますか?

4

1 に答える 1

1

これには多くの理由が考えられます。この記事を見てください:

マニフェストに適切なコンテンツ タイプ (MIME) を指定していないと思います。「text/cache-manifest」である必要があります。Chrome のコンソールでイベントを確認します。appcache マニフェストが正しい場合、次のように表示されます。

マニフェストを使用した Application Cache の作成http://example.com/manifest.appcache
Application Cache Checking イベント
Application Cache Downloading イベント
Application Cache Progress イベント (XXX の YYY)
Application Cache Cached イベント

マニフェストが確実に解析されるように、最も単純なマニフェストから始めることをお勧めします。試す:

CACHE MANIFEST
NETWORK:
*

このようなマニフェストは、開始 HTML ページのみをキャッシュする必要があります。

于 2013-01-24T17:30:17.103 に答える