HTML 5应用程序缓存不要缓存文件清单命令吗?

时间:2013-11-28 21:57:24

标签: html5 browser-cache html5-appcache

好的,这是我的清单文件。

CACHE MANIFEST
#r3

NETWORK:
*

CACHE:
/js/jquery.maskedinput.js
/js/less-1.5.0.min.js
/css/styles.less
/css/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
/css/images/ui-bg_glass_45_0078ae_1x400.png 
/css/images/ui-icons_e0fdff_256x240.png
/css/images/ui-icons_0078ae_256x240.png  
/css/images/ui-icons_056b93_256x240.png
/css/images/ui-bg_gloss-wave_75_2191c0_500x100.png
/images/logo.png
http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js
http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js

FALLBACK:
/ /offline.php

在html标签上的index.php文件中,我有以下内容

<html manifest="/cache.manifest">

缓存确实有效,但效果很好。我没有在文件中告诉我希望将index.php缓存,但默认情况下它似乎假设您要缓存它所调用的文件。

对于我的程序,我不想不想这样做。我只希望它能够缓存其他资源以帮助提供移动设备的带宽,然后我会在没有互联网连接的情况下提供后备页面。

现在它总是使用index.php的缓存版本,因此我的页面访问者永远不会看到offline.php,因为它缓存了它。

如何阻止文件假设它要缓存声明清单的文件? (或者换句话说,在我的例子中是index.php)。

2 个答案:

答案 0 :(得分:1)

您需要重新考虑应用流程。如果目标网页未加载,浏览器将如何首先启动您应用的离线版本? (在离线系统的情况下)。当您离线时,用户需要指向离线的页面。如果页面未脱机,则浏览器将永远不会读取清单文件,因此永远不会到达清单中的后备选项。

旁注:.manifest扩展名为out of date。使用.appcache扩展名以及服务器的正确标头。

答案 1 :(得分:0)

我找到了一个效果很好的解决方案(My HTML5 Application Cache Manifest is caching everything),此处已列出。

它讨论了使用iFrame。通过将html cache命令放在iframe中并将iframe隐藏在index.php页面上,我可以缓存所有其他文件,甚至可以正确创建回退文件。这是一种破解,但它完成了工作:)。