Web applications 在缓存清单文件HTML5的回退部分使用通配符

Web applications 在缓存清单文件HTML5的回退部分使用通配符,web-applications,html,offline,application-cache,Web Applications,Html,Offline,Application Cache,如何创建脱机启用的web应用程序,以便 当用户访问hxxp://mywebsite/ 并且比hxxp://mywebsite/offline/ 显示。[我的网站中大约有100个不同的动态页面,因此我无法在缓存清单文件中硬编码所有页面]缓存清单中不可能使用通配符,至少据我所知,它在任何当前浏览器中都不起作用。另一种方法可能是动态生成缓存清单,并让脚本生成所有这些回退条目。我引用“manifest.php”而不是“cache.manifest”,那么我的php文件如下所示: <?php

如何创建脱机启用的web应用程序,以便
当用户访问hxxp://mywebsite/ 并且比hxxp://mywebsite/offline/ 显示。[我的网站中大约有100个不同的动态页面,因此我无法在缓存清单文件中硬编码所有页面]

缓存清单中不可能使用通配符,至少据我所知,它在任何当前浏览器中都不起作用。另一种方法可能是动态生成缓存清单,并让脚本生成所有这些回退条目。

我引用“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";

?>

文件散列使其保持最新状态,以便在任何文件更改时,清单也会更改。希望有帮助:)

这将导致整个站点中的所有页面在脱机时重定向到脱机。唯一的问题是声明清单的页面总是被缓存。这意味着您不能在每个页面上声明清单,因为每个访问的页面都将被缓存,而不会重定向。因此,您可以做的是在另一个html文件(即Synchronize.html)上声明您的清单,然后通过存储cookie或localcache值,从默认值检查您的应用程序是否可以脱机使用。如果未重定向到声明清单的synchronize.html,请设置localcache值,然后重定向回index


离线令人惊叹

在索引页中不可见的iframe中引用清单文件。这样你的索引页就不会像默认情况下那样被缓存,你可以完全控制你的回退


不需要不可靠的cookie或本地存储

但是我如何生成回退条目呢?您只需要在脚本中构建一些逻辑来分别列出回退文件(基于路径、文件名等)。循环一次,排除回退文件。再次循环,只包括回退文件。是的,似乎我必须动态生成[增长]回退。谢谢你证实我的担心。@ashishb我刚刚发现当前的Firefox4.0夜间版在回退部分确实支持通配符。但在Chrome或Opera开发版本中仍然不起作用。这并不完全符合我的要求,但对于其他人来说,这仍然是一个很好的答案,可以让他们更深入地了解离线HTML5。清单的缓存让我陷入了一个循环。不过,这对澄清问题有很大帮助。谢谢
CACHE MANIFEST
CACHE:
/Offline/OfflineIndex.html

FALLBACK:
/ /Offline/OfflineIndex.html

NETWORK:
*