2014-10-02 101 views
0

我創建了一個SPA,當然它使用AJAX動態加載div中的頁面。我的佈局是一個側面手風琴菜單,當你點擊一個項目時,它會在它旁邊的div上加載信息。我的問題是,如果一個人決定以每秒鐘的速度點擊菜單項,我會開始在我的頁面中獲得空白內容。所以我的問題是,有什麼最佳做法(如果有的話),以避免頁面打破,當你有人點擊這麼快?有效且反覆更新DOM數據而不破壞頁面

事情我做對性能:

  • 使用HTML模板和JSON文件來構建應用程序之前啓動頁,保存在內存中的(簡單)的網頁抓取 - 而不是調用AJAX每次點擊
  • 現在,每次點擊我使用的clearTimeoutsetTimeout設置爲幾毫秒到切換頁面的進程減慢 - 不理想

不幸的是,因爲它太長時間,BU我不能發佈代碼我希望我能得到這些信息的幫助。

謝謝你們!

**注意:這只是前端工作,沒有數據庫,因爲負載不重。

編輯: 這是我的setTimeout和clearTimeout的小片段: if (clickTimeout) { clearTimeout(clickTimeout); } clickTimeout = setTimeout(function() { clickLink(menuItem.attr('href')); }, 500);

+0

當第二個請求被啓動時,您是否中止先前的ajax請求? – Mark 2014-10-02 16:19:26

+0

這是奇怪的事情。我只在應用程序啓動時才進行ajax調用(同步),並將信息保存在數組中。然後,對於每次點擊,我將轉到數組的內容,而不是再次調用ajax。它似乎更快,但我仍然有這個問題。 – 2014-10-02 16:21:36

+0

那麼你的頁面數據本地存儲在Javascript數組中? – Mark 2014-10-02 16:22:02

回答

0

我通常只是禁用發送Ajax出現之前引發事件的UI元素,然後將客戶端代碼重新在數據到達後啓用它。這當然只能在數據到達時運行的代碼才能完成。如果您使用數據更新DOM,則可能會出錯。有時空白DIV只會在一段時間後出現。

我認爲問題的標題是錯誤的,應該更有效地反覆更新DOM數據而不會破壞頁面。

+0

謝謝,我從來沒有想過這個。我現在正在改變標題。 – 2014-10-02 16:28:41