2010-08-25 84 views
2

我正在为iPhone设计移动网站。我已经添加了一个缓存清单,并将其加载到离线功能所需的资源列表中。清单文件具有正确的内容类型。如果您查看文件的响应标头,则内容类型为text/cache-manifest。清单文件是在这里:离线无法在移动Safari中使用缓存清单

http://hoodisgood.clientsit.es/cache.manifest

该网站是可见这里(您需要承担你的iPhone(或模拟器看看),或在用Safari浏览器的用户代理设置为iPhone

http://hoodisgood.clientsit.es/

在查看网站并将它加书签到主屏幕后,我将iphone设置为飞行模式,当我尝试查看网站时,我无法获取警报,因为它无法打开,因为它没有连接到互联网,我已经在缓存清单文件中指定了我需要用于脱机操作的所有文件。

另外,纠正我,如果我错了,但有缓存清单,即使设备在线,浏览器是否不应该从缓存源读取?当我查看该网站时,我没有看到的照片将从服务器加载,因为它应该是。当我关闭并重新打开时,之前查看的图像仍然从服务器加载。

我做错了什么?我检查并重新检查,一切似乎都是正确的,只是不确定它为什么不起作用。

谢谢。

回答

1

我注意到你的标签没有引用清单。

<html manifest="cache.manifest"> 

此外,您需要确保清单文件使用“text/cache-manifest”MIME类型。

3

我注意到你的标签没有引用清单。

<html manifest="cache.manifest"> 

此外,您需要确保清单文件使用“text/cache-manifest”MIME类型。

还要确保清单具有UTF-8编码,而不是某些浏览器难以理解的编码。

另外我可以推荐你在Chrome中加载网站。如果您查看Chrome中的开发者日志,Chrome会写出非常有用的错误消息,指导您解决问题所在。

1

我有一个类似的问题:

尝试引用清单档案中的绝对路径。这为我做了诀窍,我也使用了子域。

也使在Safari开发者控制台,并添加下面的JS

function logEvent(event) { 
    console.log(event.type); 
} 
window.applicationCache.addEventListener('checking', logEvent, false); 
window.applicationCache.addEventListener('noupdate', logEvent, false); 
window.applicationCache.addEventListener('downloading', logEvent, false); 
window.applicationCache.addEventListener('cached', logEvent, false); 
window.applicationCache.addEventListener('updateready', logEvent, false); 
window.applicationCache.addEventListener('obsolete', logEvent, false); 
window.applicationCache.addEventListener('error', logEvent, false); 

这样你可以检查在问候你的缓存清单在浏览器中会发生什么,如果发生错误中学习。