无法获得简单的html5清单缓存工作!

use*_*701 9 html html5 manifest

我正在尝试使用简单的html5网络摄像头.

这是我唯一的html页面,index.html:

<!DOCTYPE HTML>

<html manifest="./main.manifest">
  <body>
    <p>Hi.</p>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是我唯一的缓存文件,main.manifest:

CACHE MANIFEST
# 2011-05-02-03

index.html
Run Code Online (Sandbox Code Playgroud)

我正在运行apache共享主机,我在我的web目录中放了一个.htaccess文件,这些其他两个文件都是,因为我想也许我必须定义mime类型:

AddType text/cache-manifest .manifest
Run Code Online (Sandbox Code Playgroud)

所以最后我只在这个目录中有这三个文件:

index.html
main.manifest
.htaccess
Run Code Online (Sandbox Code Playgroud)

当我从我的mac访问chrome页面,从我的iphone访问chrome,或从我的android 2.3设备访问chrome时,没有任何反应,页面像往常一样加载.如果我打开飞行模式(杀死所有连接),则无法加载页面(所以我猜缓存失败).

我在这里错过了什么?

谢谢

------------更新------------------

我认为mime类型没有被正确识别.我将.htaccess更新为:

AddType text/cache-manifest manifest
Run Code Online (Sandbox Code Playgroud)

现在,如果我在控制台上运行谷歌浏览器,我会看到:

Document was loaded from Application Cache with manifest
http://example.com/foo/main.manifest
Application Cache Checking event
Application Cache NoUpdate event
Run Code Online (Sandbox Code Playgroud)

当我加载关于想要让我将它存储到磁盘的网站的页面时,Firefox会提示我,所以这很好.看起来它也在使用android 2.3.4.浏览器仍然显示"由于您没有连接到互联网,因此无法加载此页面",但无论如何它都会加载.

谢谢!

ale*_*ine 5

首先,你是第一次使用mime类型声明.它应该是这样的:

AddType text/cache-manifest .manifest
Run Code Online (Sandbox Code Playgroud)

接下来,阅读Dive Into HTML5中的这一段:

问:我是否需要在缓存清单中列出我的HTML页面?

答:是的,不是.如果整个Web应用程序包含在单个页面中,请确保该页面使用manifest属性指向缓存清单.当您导航到具有清单属性的HTML页面时,页面本身被假定为Web应用程序的一部分,因此您无需在清单文件本身中列出它.但是,如果您的Web应用程序跨越多个页面,则应列出清单文件中的所有HTML页面,否则浏览器将不知道还有其他需要下载和缓存的HTML页面.

因此,在这种情况下,您不需要缓存清单.浏览器将自动缓存您的页面(只要它是唯一的资源,例如CSS文件或Javascript文件).

有关更多信息,请访问上面的链接.