我有一个Web应用程序,我想让它也脱机运行。在这个应用程序中我只有一个表单,我正在使用PHP提交它。我使用的是manifest.php文件,如http://building-iphone-apps.labs.oreilly.com/ch06.html中描述的那样。
问题是我需要以某种方式从清单中的表单添加参数,以缓存正确的文件,例如文件welcome.php?name = aaaa而不是welcome.php。所以我需要在manifest.php中使用GET作为名称。但是如果我理解的话,清单文件是在提交表单之前在开头创建的,因此“name”上的值为空。
有没有办法在我的清单文件中添加这些参数以便离线运行应用程序?
谢谢
答案 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并可以生成适当的清单内容。