2011-07-31 50 views
2

我正在存儲網頁的骨架快照,服務器生成的HTML本身,所以當我發送Ajax請求回到服務器,服務器可以找出什麼該客戶端看起來像併發送適當的差異。如何/在哪裏存儲數據在客戶端的HTML

這個框架基本上是一個Tree,其中每個節點代表一個組件(菜單欄,邊欄,內容,評論,無論什麼),它是子組件。

目前,我將它存儲爲Base64ed GZiped JSONed數據。作爲純JSON,大約需要4000個字符,但編碼需要大約500個字符。 (出於興趣,蟒蛇的醃菜需要約3000個字符,但只壓縮到2000)

所以我的問題是,還有什麼我可以做的關鍵數據了?任何比Base64更緊湊的網頁安全數據格式?任何壓縮比GZip更緊湊?將gzip函數的「級別」從6提高到9導致很少(〜20個字節)的節省。

而另一個問題是,這些數據應該放在哪裏?目前它只是坐在隱藏的輸入字段的值處。無論是在某些輸入的屬性,還是某些其他標記的屬性,作爲帶顯示的div的內容,它都無所謂:hidden?還是不值得關心?

回答

1

我沒有看到將其存儲在隱藏字段中的原因。我wouldnt建議存儲在隱藏的領域。您可以使用Jquerys數據方法來存儲json,或者將它存儲在正確範圍的javascript變量中。

那麼我不知道你採取什麼辦法來獲得DIFF。您是否將從客戶端存儲的數據發送回服務器,或者您是否將數據從服務器發送到客戶端,然後在客戶端將其DIFF,這可能是更好的選擇?

關於壓縮我不認爲你應該專注於它太多因爲你也需要花時間去解壓它。因此,目前的事情要檢查將是

compression + decompression < time taken for transfer 

如果是這樣的話,那麼你應該可能壓縮數據。

+0

我在服務器上差異併發送差異到客戶端。我可以做到這一點,但我不喜歡JavaScript,並希望保持我的編碼最低= D。我會檢查壓縮所需的時間。也許我應該把它寫入一個JavaScript變量。 –

+0

是的,我會建議相同.. – Baz1nga