2017-07-17 25 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格式中並不可行。 –

相關問題