在twitter unfollow一些人之後,他們為什麼能立刻從timeline消失?twitter使用的是"推"還是"拉"模式?

一般的sns資料庫,為了優化查詢時間,是對每個用戶維護一個timeline的表的吧,每個人有了一條事件,會推送到所有follower的timeline中,這會導致unfollow後不能即刻從timeline中消失,而twitter中這種情況並不存在,請問twitter的使用的是"拉"還是"推"模式?


一般社交網站,都是用拉的模式的,你新關注一個人,你的時間線里會有他以前發表的內容,因為內容存放在一個表裡,然後人和人的關係存放在另一個表裡,這樣才會有好的效率。

所以很多網站限定你關注多少人,而不會限制你的粉絲數。

假設你有1000萬的粉絲,你發表一條消息,要插給所有粉絲的話,你需要插入新行1000萬條,而拉的模式只需要一條就行了。

(PS:微博的關註上限是2000,這樣查找關係時不會因為太大而耗費大量查詢時間。)

新浪上,你取消關注某個人,他不會立即消失,是因為頁面沒有刷新,你直接刷新一遍,對方的內容就不在你的時間線上了。

推特也是不刷新的,但是推特在取消關注後會執行一個js命令。

推特的數據是採用json傳輸到瀏覽器再用js處理後套模版的。

然後推特是全站ajax化的,數據是緩存到瀏覽器里的。

在你unfollow別人的時候,他們會在緩存數據里找到uid為這個人的那些數據,然後刪掉。

你切換後再切換回來,緩存數據重新渲染成html,這個時候裡面已經沒有那個uid的數據了。

如果是在主頁unfollow的話,當時就執行一次重新渲染。

可以驗證一下,你新follow一個,不刷新頁面,他以前的內容不會顯示在你的時間線里。不過你刷新一次就可以看到他以前的內容了。


推薦閱讀:

Twitterrific 5 for iOS 的使用體驗怎麼樣?
為什麼 Twitter 沒有圖片功能?
Twitter上的段子手都是哪國人、做什麼的?
Twitter 為什麼只提供「more」,卻不提供「翻頁」功能?
Twitter 推出 $(股票符號)的價值何在?

TAG:互聯網 | Twitter | 資料庫 |