无法使HTML5 AppCache正常工作

时间:2012-09-18 11:33:57

标签: html5 html5-appcache

我正在尝试为我维护的应用添加一些离线缓存。这是我第一次使用AppCache,所以我决定首先用一个小型的演示站点来测试它。到目前为止,我无法使其离线部分正常工作。 Chrome似乎正在缓存index.php,因为打印出的日期/时间永远不会在页面上发生变化,即使我在脚本中发送所有这些无缓存标头,尽管在Firefox中日期正在正确更新。当我离线时(通过禁用我的网络适配器)Chrome会继续显示缓存的index.php而不是清单指定的offline.html,尽管我在控制台中收到以下错误:

  

应用程序缓存错误事件:清单提取失败(-1)   http://html5test.g1testserver/manifest.appcache

Firefox只显示“无法连接”对话框。网站的布局和文件内容都列在下面。

网站布局:

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

manifest.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

1 个答案:

答案 0 :(得分:2)

您无需在<html>标记内包含清单。只有在您想要缓存那个页面时才需要这样做。不包括doctype中的清单并不意味着.appcache不会被调用/更新。

因此,如果您希望offline.html在index.php离线时作为后备运行,则不要缓存index.php。

HTML5Rocks有一些关于如何使用appcache here

的精彩信息