2017-07-17 47 views
0

我有一个用于多项选择测试的Web应用程序。测试是在平板电脑(iPad/Android平板电脑)上完成的。我遇到的问题是,测试运行缓慢,因为以前的开发人员对测试屏幕的每个部分(图像,问题,回答集,场景等)进行了调用数据库的ajax调用。测试仅显示一个在屏幕上的问题和Next/Previous点击它去分别获取数据。离线移动Web应用程序中使用的XML/JSON对象

附加信息:测试包含40-45个问题,也可以是所有问题都有图片。

我已经更改了代码来构建一个包含所有问题图像和所需信息的对象。

我想知道的是,是否有可能将整个对象转换为任何xmljson对象(我已经完成了代码已经进行转换),并以某种方式xml/json对象存储在应用程序缓存/清单因此系统会调用数据库,在开始测试时获取所有信息,因此初始加载速度较慢,但​​是为该文件的其余部分使用缓存对象,以便运行速度更快?

如果确实有可能,您可以提供一个如何使用这个的例子,如果不是的话,那么下一个最好的事情是什么,因为我真的想提高测试的速度。

也可以作为替代方案,您可以创建一个XML文件,然后将该文件存储在本地,以便移动Web应用程序可以访问存储在那里的数据?因为可能有更大的图像可能会超过5MB缓存限制。

回答

0

我想你要找的是SessionStorageLocalStorage在浏览器中。它允许您在浏览器会话期间(直到浏览器关闭)或永久性地将数据分别存储在浏览器中。

您可以window对象上访问和使用它们一样简单键值存储:

// Save data to sessionStorage 
sessionStorage.setItem('key', 'value'); 

// Get saved data from sessionStorage 
var data = sessionStorage.getItem('key'); 

// Remove saved data from sessionStorage 
sessionStorage.removeItem('key'); 

// Remove all saved data from sessionStorage 
sessionStorage.clear(); 
+0

乔恩您好,感谢您的建议。我看了会话和本地存储。用于在学校测试的主要设备是iPad的iOS,并且根据自iOS 5.5提供的链接,系统可以根据需要清除缓存。在测试过程中存储的信息被清除,这只是有点令人担忧。 – J2H656

+0

它在积极使用时很少发生这种情况。不过,我认为能够从缓存中加载90%以上的问题比0%好。检查数据是否仍然存在,如果不存在,则重新加载。 –

+0

“但是我会考虑能够从缓存中加载90%以上的问题,而不是0%。”这是真的......我会看看并玩弄它。如果它确实帮助我的情况,我会将其标记为答案!谢谢 – J2H656

0

如果这已经是一个Ajax应用程序,那么你可以考虑把它变成一个单页的应用程序,使你永远不会从服务器完成一个完整的“新页面”请求,但只会根据需要发出Ajax请求并更新页面。在这种情况下,您从服务器获得的任何数据都可以保存在普通的Javascript变量中。

(这将是有趣的编写使用撒克逊JS这个应用程序,但你可能不希望看到完全重写......)

+0

当前Web应用程序布局由主测试视图和3 - 4部分视图(答案选项,问题,场景,图像)组成。你会建议我创建一个视图好一点,做一个Ajax调用,然后填充Div和字段? 因为现在它正在执行一个Ajax调用来加载一个部分,那么在完成之后,就会有一个ajax调用来为每个部分视图获取数据并连续返回它。我觉得这是不必要的数据库调用和过程。 想法? – J2H656

+0

我们在这里进入了设计问题而不是编码问题,除非我已经仔细研究了需求,否则我不想提供设计方面的建议。这在StackOverflow格式中并不可行。 –

相关问题