这是我唯一的html页面,index.html:
<!DOCTYPE HTML> <html manifest="./main.manifest"> <body> <p>Hi.</p> </body> </html>
这是我唯一的缓存文件,main.manifest:
CACHE MANIFEST # 2011-05-02-03 index.html
我正在运行apache共享主机,我在我的web目录中放了一个.htaccess文件,其中这两个文件是,因为我想也许我必须定义mime类型:
AddType text/cache-manifest .manifest
所以最后我只在这个目录中有这三个文件:
index.html main.manifest .htaccess
当我从我的mac访问chrome页面,从我的iphone访问chrome或从我的android 2.3设备访问chrome时,没有任何反应,页面像往常一样加载.如果我打开飞机模式(终止所有连接),则无法加载页面(所以我猜缓存失败).
我在这里想念的是什么?
谢谢
————更新——————
我认为mime类型没有被正确识别.我将.htaccess更新为:
AddType text/cache-manifest manifest
现在,如果我在控制台上运行谷歌浏览器,我会看到:
Document was loaded from Application Cache with manifest http://example.com/foo/main.manifest Application Cache Checking event Application Cache NoUpdate event
当我加载关于想要让我将它存储到磁盘的网站的页面时,Firefox会提示我,所以这很好.看起来它也在使用android 2.3.4.浏览器仍然显示“由于您没有连接到互联网,因此无法加载此页面”,但无论如何它都会加载.
谢谢!
解决方法
AddType text/cache-manifest .manifest
接下来,阅读Dive Into HTML5中的这一段:
Q: Do I need to list my HTML pages in my cache manifest?
A: Yes and no. If your entire web application is contained in a single
page,just make sure that page points to the cache manifest using the
manifest attribute. When you navigate to an HTML page with a manifest
attribute,the page itself is assumed to be part of the web
application,so you don’t need to list it in the manifest file itself.
However,if your web application spans multiple pages,you should list
all of the HTML pages in the manifest file,otherwise the browser
would not know that there are other HTML pages that need to be
downloaded and cached.
因此,在这种情况下,您不需要缓存清单.浏览器将自动缓存您的页面(只要它是唯一的资源,例如CSS文件或Javascript文件).
有关更多信息,请访问上面的链接.