ユーザーが hxxp://mywebsite/ にアクセスし、オフラインのときに hxxp://mywebsite/offline/ が表示されるように、オフライン対応の Web アプリケーションを作成する方法。[私の Web サイトには約 100 の異なる動的ページがあるため、それらすべてをキャッシュ マニフェスト ファイルにハードコーディングする余裕はありません]
4 に答える
「cache.manifest」の代わりに「manifest.php」を参照すると、php ファイルは次のようになります。
<?php
header('Content-Type: text/cache-manifest');
echo "CACHE MANIFEST\n";
$hashes = "";
$dir = new RecursiveDirectoryIterator(".");
foreach(new RecursiveIteratorIterator($dir) as $file) {
$info = pathinfo($file);
if ($file->IsFile() &&
$file != "./manifest.php" &&
substr($file->getFilename(), 0, 1) != ".")
{
echo $file . "\n";
$hashes .= md5_file($file);
}
}
echo "# Hash: " . md5($hashes) . "\n";
?>
ファイル ハッシュはファイルを最新の状態に保つため、ファイルが変更されるとマニフェストも変更されます。それが役立つことを願っています:)
CACHE MANIFEST
CACHE:
/Offline/OfflineIndex.html
FALLBACK:
/ /Offline/OfflineIndex.html
NETWORK:
*
これにより、サイト全体のすべてのページがオフライン時にオフラインにリダイレクトされます。唯一の問題は、そのページが常にキャッシュされるため、マニフェストを宣言するページにあります。これは、訪問したすべてのページがそれ自体でキャッシュされ、リダイレクトされないため、すべてのページでマニフェストを宣言できないことを意味します。したがって、別のhtmlファイル(IE。Synchronize.html)でマニフェストを宣言し、デフォルトからCookieまたはlocalcache値を保存してアプリがオフラインで使用できるようになっているかどうかを確認できます。マニフェストが宣言されたsynchronize.htmlにリダイレクトしない場合は、localcache値を設定し、インデックスにリダイレクトします。
オフラインAWESOMENESSSSSSSSSSS!!!!
キャッシュ マニフェストでワイルドカードを使用することはできません。少なくとも、私の知る限り、現在のブラウザでは機能しません。別の方法として、キャッシュ マニフェストを動的に生成し、スクリプトでこれらすべてのフォールバック エントリを生成することができます。
インデックス ページの非表示の iframe でマニフェスト ファイルを参照します。そうすれば、通常はデフォルトでインデックスページがキャッシュされず、フォールバックを完全に制御できます...
信頼できない Cookie や localStorage は必要ありません。