如何在清单文件HTML5中为脱机模式添加参数?

时间:2010-10-28 10:11:36

标签: php html5 get manifest offline

我有一个Web应用程序,我想让它也脱机运行。在这个应用程序中我只有一个表单,我正在使用PHP提交它。我使用的是manifest.php文件,如http://building-iphone-apps.labs.oreilly.com/ch06.html中描述的那样。

问题是我需要以某种方式从清单中的表单添加参数,以缓存正确的文件,例如文件welcome.php?name = aaaa而不是welcome.php。所以我需要在manifest.php中使用GET作为名称。但是如果我理解的话,清单文件是在提交表单之前在开头创建的,因此“name”上的值为空。

有没有办法在我的清单文件中添加这些参数以便离线运行应用程序?

谢谢

2 个答案:

答案 0 :(得分:0)

你能做到这一点的唯一方法就是在清单中列出带有参数的文件,这样你就必须事先知道所有可能的参数,然后用你的manifest.php将它们吐出来,最后得到一个清单文件看起来像这样:

CACHE MANIFEST
welcome.php?name=aaaa
welcome.php?name=aaab
welcome.php?name=aaac
...thousands more lines...
welcome.php?name=zzzz

NETWORK:
welcome.php

但是,我强烈建议您不要这样做(如图所示)您想向用户提供个性化的欢迎页面。使用这种方法,每个用户都会下载每个欢迎页面,即使他们只需要查看其中一个页面。

我认为有两种方法可以更好地运作:

1:提供个性化页面

如果只有更改的内容是此页面,请在访问welcome.php页面之前强制用户登录,然后使用会话变量而不是查询参数来提供个性化页面。然后,您只需在清单中指定welcome.php,每个用户都将缓存一个个性化版本。

2:撰写完整的离线应用

如果您的网络应用程序在每个步骤都要包含用户特定数据,则需要分解常见的应用程序组件和用户数据,并单独提供。如果您的应用程序要执行任何离线操作,那么将使用JavaScript进行操作,因此您应该使用JavaScript在浏览器中更新页面,而不是使用PHP在服务器端生成整个页面。

您的大多数PHP页面基本上都是模板,您将通过JavaScript加载用户数据(您仍然可以为浏览器中没有脱机功能的用户填充'旧'方式)。您将至少有一个PHP页面,它响应AJAX请求提供数据。对于这种方法,您需要了解Local Storage以及用于管理cache和检测offline state的各种JavaScript API。一旦用户决定安装您的Web应用程序的离线版本,您下载该用户的所有数据并将其放入本地存储,然后使用该数据在user is offline时加载每个页面。当用户重新联机时,所做的任何更改都需要同步回服务器。

答案 1 :(得分:0)

由于applciation缓存在它引用的页面之后加载。当参数可用时,您必须通过applicatonCache.update()重新加载缓存。

将参数注入清单的技巧是在调用update()之前设置cookie。您的服务器端脚本获取cookie并可以生成适当的清单内容。