好的,这是我的清单文件。
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)。
答案 0 :(得分:1)
您需要重新考虑应用流程。如果目标网页未加载,浏览器将如何首先启动您应用的离线版本? (在离线系统的情况下)。当您离线时,用户需要指向离线的页面。如果页面未脱机,则浏览器将永远不会读取清单文件,因此永远不会到达清单中的后备选项。
旁注:.manifest
扩展名为out of date。使用.appcache
扩展名以及服务器的正确标头。
答案 1 :(得分:0)
我找到了一个效果很好的解决方案(My HTML5 Application Cache Manifest is caching everything),此处已列出。
它讨论了使用iFrame。通过将html cache命令放在iframe中并将iframe隐藏在index.php页面上,我可以缓存所有其他文件,甚至可以正确创建回退文件。这是一种破解,但它完成了工作:)。