2011-06-08 51 views
0

我正在製作一個帶有通知系統的網站,在每個頁面加載時運行AJAX以查詢名爲notifications的數據庫中的表。我不想顯示其中的通知數量,但只顯示類型。有4種類型。我目前擁有JSON,只需獲取類型列的UNIQUE,然後檢查每種類型。優化通知檢查

因爲這會運行很多次,我想確保它被優化。我猜測一種方法是不運行這個檢查來檢查有人擁有全部3個新通知,直到他們點擊通知欄(即直到他們有機會清除其中一個通知欄)。

我也想知道,如果你認爲這會使我的每個類型成爲素數#會產生變化(正面或負面),然後將它們乘以服務器端,這樣,而不是發送3個不同的整數我發送3個素數的產品,然後檢查每種類型,我只是mod(%)。我也想知道,如果你認爲它可能會有所作爲,但這樣一個小小的,我不應該擔心它。我只擔心,因爲它會在每個頁面加載時運行,並且不希望用戶感覺該網站很慢。

模式:

`notifications` 
(`id`,`from`,`to`,`type`,`optional_message`) 
+4

牆上的文字。下一次使用段落 – dynamic 2011-06-08 14:45:29

回答

1

我也想知道但如果你認爲它會有所作爲(正或負),對我來說,使每個類型的黃金#​​,然後它們相乘服務器端,這樣,而不是發送3個不同的整數我發送3個素數的產品,然後檢查每種類型,我只是mod(%)。我也想知道,如果你認爲它可能會有所作爲,但這樣一個小小的,我不應該擔心它。

FFS!對於某些系統來說,這種複用非常重要 - 但通常通過ORing位域來實現。但對於HTTP來說,這將節省的帶寬量是可笑的小。不要打擾。

如果你確實需要優化它,那麼這樣做的方法就是緩存數據服務器端(MySQL會用半智能算法爲你做這個)。

對於每個密鑰有四個實體,使用物化視圖對數據進行非規格化將不會產生性能優勢,除非te數據爲非常傾斜。

+0

恢復健康。通過HTTP打包比特是絕對瘋狂的,不能有任何區別。無論哪種方式,您都會發送完全相同數量的數據包(可能是一個)。 – meagar 2011-06-08 16:25:01

0

最大限度地減少發送似乎很少在這種情況下的數據量,但考慮在未來添加更多的通知。如果你使用一個位掩碼,你可以有很多不同的通知,並仍然發送微小的數據。比較開發成本和收益,因爲你非常關心這個優化,所以我會選擇位掩碼。

關於應該多久執行一次新通知檢查 - 如果用戶有所有通知,顯然您不需要再檢查。我考慮的另一個優化是更改更新間隔。這意味着如果用戶有0個通知,我會每隔5秒檢查一次,當他有1個通知時,我會每10秒檢查一次,等等。我不知道這些通知代表什麼,但通常收到很多通知已經意味着獲得另一種不同類型通知的機會更低。你能否提供一些更詳細的信息,我不確定是否屬於這種情況?

+0

是的,這實際上聽起來像一個好主意,我不想只檢查一個計時器,雖然有人在後臺離開該網站,但一些計時器和點擊新頁面的組合很棒。 – mazlix 2011-06-08 15:33:45

+0

不要去掩飾它,它不可能幫助你,你會浪費一大筆時間從字面上沒有任何好處。通過HTTP打包比特是愚蠢的。此外,僅在屏幕上進行掩碼*會妨礙您稍後添加新類型的通知。 – meagar 2011-06-08 16:25:24