2010-03-24 42 views
0

我在考慮如何構建像twitter這樣的廣告網站。在服務器或客戶端進行篩選?

這意味着,大多數用戶不會通過瀏覽器訪問網站,他們應該在PC或智能手機上運行專用客戶端應用程序。然後,他們設置一些關於他們喜歡什麼樣的廣告的過濾器。當滿足其需求的新職位出現時,客戶將發出通知。
要使客戶端儘可能實時,它必須在很短的時間間隔內輪詢服務器。

問題是,我應該在客戶端輪詢時在服務器端進行過濾,還是應該將所有新帖子轉移到客戶端並讓客戶端進行過濾?

進行服務器端過濾可能會導致服務器的CPU週期過長,但是將每個帖子盲目傳輸到客戶端可能會浪費大量帶寬。

只是一個腦遊戲。 :)

回答

0

正如其他人指出的那樣,發送不會被使用的數據沒有意義。人們只想下載他們可以使用的東西。如果有人支付他們的移動數據津貼,並且您的應用向他們展示了2個廣告並使用了1000個廣告數據,他們將停止使用您的服務。

您可以在數據庫端按某些類型進行過濾,也可以在將最終數據發送回客戶端之前,通過服務中的某些更深入的業務邏輯進行過濾。

重點是;低數據傳輸,更快的響應,更快樂的用戶:-)

1

在服務器端過濾數據我在其上應用一個簡單的過濾器查詢(SELECT * FROM tweets WHERE category IN (1,2,3,4,5,))不會花費你太多的性能 - 遠遠少於將所有可用數據分發給所有客戶端。

0

哦,尤其是如果你也考慮部署到移動設備上,/ always/filter在服務器端。也許主要問題是找到適當的數據結構,將新帖子鏈接到過濾器,這樣並不昂貴。你也可以在memcached中保存最常用的條目和過濾器,這樣你就不會總是碰到數據庫。

根本沒有意義將所有的東西都轉移到客戶端,然後不顯示它。

0

我想在服務器上過濾會是更好的方法,這將減少傳輸的數據量(expecially爲智能手機用戶,這將是一個巨大的增益)

1

如果通過過濾你的意思是一個SQL查詢,那麼在服務器上使用它當然會更好。從任何SQL數據庫中查詢都非常輕,即使您創建了數千個SELECT。

相關問題