2

私が管理しているアプリにオフライン キャッシュを追加しようとしています。AppCache を使用するのはこれが初めてなので、最初に小さなデモ サイトで試してみることにしました。これまでのところ、これのオフライン部分を正しく機能させることができませんでした。Firefoxでは日付が正しく更新されていますが、スクリプト内でキャッシュなしのヘッダーをすべて送信しているにもかかわらず、印刷された日付/時刻がページ上で変更されないため、Chromeはindex.phpをキャッシュしているようです。(ネットワーク アダプターを無効にして) オフラインにすると、コンソールに次のエラーが表示されますが、Chrome は引き続き、マニフェストで指定された offline.html ではなく、キャッシュされた index.php を表示します。

アプリケーション キャッシュ エラー イベント: マニフェストのフェッチに失敗しました (-1) http://html5test.g1testserver/manifest.appcache

Firefox は単に「接続できません」ダイアログを表示します。サイトのレイアウトとファイルの内容はすべて以下のとおりです。

サイトのレイアウト:

/root/
-  manifest.appcache
-  index.php
-  offline.html
-  .htaccess

マニフェスト.appcache:

CACHE MANIFEST
# version 3

CACHE:
offline.html

NETWORK:
index.php

FALLBACK:
/ offline.html

index.php:

<?php
    header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
echo '<!DOCTYPE html>
<html manifest="/manifest.appcache">
<head>
    <title>HTML5 Test</title>
    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />
</head>
<body>

<h1>This is index.php: '.date('d/m/Y H:i:s').'</h1>
</body>
</html>
';
?>

offline.html:

<!DOCTYPE html>
<html manifest="/manifest.appcache">
<head>
</head>
<body>
    <h1>This will be served in place of index.php</h1>
</body>
</html>

.htaccess:

AddType text/cache-manifest .appcache
4

1 に答える 1

2

タグ内にマニフェストを含める必要はありません<html>これは、そのページをキャッシュする場合にのみ必要です。マニフェストを doctype に含めないからといって、.appcache が呼び出されたり更新されたりしないというわけではありません。

したがって、index.php がオフラインのときに、offline.html をフォールバックとして実行したい場合は、index.php をキャッシュしないでください。

HTML5Rocks には、appcache の使用方法に関する優れた情報がいくつかあります

于 2012-09-19T10:48:02.027 に答える