如何创建启用离线的 Web 应用程序,以便当用户访问 hxxp://mywebsite/ 并且离线时显示 hxxp://mywebsite/offline/。[我的网站中有大约 100 个不同的动态页面,所以我无法将它们全部硬编码到缓存清单文件中]
问问题
4621 次
4 回答
7
我引用“manifest.php”而不是“cache.manifest”,那么我的 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";
?>
文件哈希使其保持最新,因此如果有任何文件更改,清单也会随之更改。希望有帮助:)
于 2010-09-16T20:23:32.853 回答
5
CACHE MANIFEST
CACHE:
/Offline/OfflineIndex.html
FALLBACK:
/ /Offline/OfflineIndex.html
NETWORK:
*
这将导致您在整个站点上的所有页面在离线时重定向到离线状态。唯一的问题是声明清单的页面,因为该页面始终被缓存。这意味着您不能在每个页面上声明清单,因为每个访问过的页面都将被自己缓存而不是重定向。因此,您可以做的是在另一个 html 文件(IE. Synchronize.html)上声明您的清单,然后从默认情况下通过存储 cookie 或 localcache 值检查您的应用程序是否可以离线使用。如果未重定向到声明清单的 synchronize.html,则设置 localcache 值,然后重定向回索引。
离线真棒SSSSSSSS!!!!
于 2010-11-25T14:54:22.860 回答
1
不可能在缓存清单中使用通配符,至少据我所知,它在任何当前浏览器中都不起作用。另一种方法可能是动态生成缓存清单,并让脚本生成所有这些后备条目。
于 2010-09-16T17:45:13.660 回答
0
在索引页面的不可见 iframe 中引用您的清单文件。这样,您的索引页面就不会像默认情况下那样被缓存,并且您可以完全控制您的后备...
不需要不可靠的 cookie 或 localStorage!
于 2012-06-26T09:26:03.460 回答