目前正在处理Web应用程序。该应用程序的一个特定区域/页面执行DB操作的特定时间。此页面的当前结构是:
1) DWR call from the front end to the backend
2) Front end waits for the backend to return data
3) When data is returned, the callback function is executed in the
front end and data is displayed to user in the format needed.
在第2步中,后端需要花费大量时间来处理和发送数据。在这整个过程中,应用程序无法使用。
应该做出的改变是:
1) Let the user use the application after sending the request in step #1
2) Front end will be populated with data after the backend processes the data and
send the details back.
3) When user revisits the page, information from previous request is available.
我正在寻找使这成为可能的方法。不确定是否有DWR或Spring机制来实现这一目标。请指出正确的方向,以便我可以更多地研究所需的正确代码。
答案 0 :(得分:0)
主要问题是 - 您使用的是哪种技术用于页面,以及需要多少“等待”。
最简单的情况是,如果浏览器在等待期间可以保持打开连接:当等待时间不长,用户仍然在同一页面上时会发生这种情况。在这种情况下,服务器暴露REST而忽略了谁在使用它。大多数工作都是在客户端需要执行异步ajax - 如果它是DWR see here,如果它是spring,那么它不会干扰客户端,你可以使用任何你喜欢的javascript助手,例如JQuery
如果等待时间很长,或者即使用户同时导航到另一个页面,用户也应该收到“推送”通知,这会变得更加复杂。在这种情况下,我建议调查websockets or server-sent events或长轮询机制(google it - 有很多示例和产品,有些免费,有些代价高昂)。无论如何,要为这里的学习曲线做好准备。
关于要求3(在重新访问页面时快速查看数据的方式),我没有任何神奇的解决方案,只需要很好的旧缓存......你的缓存可能位于不同的位置 - 通过中间的一些缓存代理从客户端到服务器。显然,需要考虑缓存刷新策略 - 最简单的情况是,如果您可以使用相同的数据“X分钟/小时”,复杂的情况是,如果您需要刷新特定的业务操作。