2015-09-05 65 views
0

我正在編寫一個聊天應用程序,並且它變得更復雜一些,因爲我希望它具有交付確認,消息緩存等功能。在這種情況下,使用html字符串的片段有什麼優勢嗎?

現在,我正在處理消息緩存的方法是:

  1. 用戶點擊對話

  2. 第一批從服務器獲取信息存儲在「塊」的,裏面數組。

  3. 每個塊都是一個文檔片段,其中n附加到它的消息數量(DOM元素)。
  4. 當用戶向上滾動時,更多的塊(片段)被添加到數組中,因爲它們是從服務器獲取的。
  5. 當用戶進入到另一個會話,但隨後決定加載先前加載的會話,該腳本附加所有片段到一個單一的一個,並且大片段被附加到消息窗口。

這是如何與消息「塊」的陣列看起來像如果用戶已經提取的大量的消息:

conversation[2].chunks = [ 
    #document-fragment, 
    #document-fragment, 
    #document-fragment 
]; 

每個片段具有內所附約10的消息。

在使用片段之前,我通過獲取每個消息的HTML表示來使用字符串。是這樣的:

conversation[2].chunks = [ 
    '<span class="msg">Hey</span><span class="msg">Hey</span>...', 
    '<span class="msg">Bla</span><span class="msg">bla</span>...' 
]; 

我決定使用的片段,因爲我發現操縱每個消息容易(通過執行這樣的東西fragment.getElementById),與具有使用innerHTML解析字符串和操縱元件。

不過,我現在質疑它是否是正確的選擇,因爲我不知道,如果保持一個陣列內片段實際上是內存密集型,或者至少更多的內存密集型不是字符串。 另一個缺點是,現在,如果我想的片段存儲在localStorage,我不得不給每個片段的內容轉換爲HTML字符串,當我想用​​localStorage與我的片段一起的系統,我不得不轉換每個HTML字符串返回到文檔片段。

使用片段顯得更自然,但現在我想的要回保持HTML字符串。然而,這是一項工作,因爲我沒有舊的代碼了。

在這種情況下使用HTML字符串的片段是否有優勢?

謝謝。

+1

你用JSON試過嗎? JSON更好,因爲您可以在網絡中的數據傳輸中使用更少的長度處理數據結構。 –

+0

嗯,所有的數據都以JSON傳輸。我也可以存儲JSON字符串客戶端,但是隨後每次我想在UI中顯示它們時,都必須生成消息的HTML。我現在正在做的是從JSON構建HTML一次,然後決定是否將該HTML存儲爲片段或字符串。或者,也許我得到的建議是錯誤的?謝謝。 –

回答

0
  1. 保存消息的批次爲HTML字符串的塊比保存文件片段(見jsperf)的塊更快,但
  2. 讀取文檔片段的塊用於顯示消息是比讀取速度更快 (和解析)HTML字符串顯示(見jsperf

可以認爲:

爲了更快地緩存從服務器接收到的消息,應將消息緩存爲HTML字符串。

爲了快速顯示緩存後的消息,應該將消息緩存爲文檔片段。

+0

感謝您的測試。我想我會混合兩種方式,我希望它不會太混亂。 –

相關問題