揭秘新版SkyDrive架構(gòu)的幕后
新版 SkyDrive 介紹在此,總的來說,新 SkyDrive 架構(gòu)已經(jīng)使用 AJAX、HTML 5 和現(xiàn)代瀏覽器特性來減少頁面加載時間,并使得每次點擊幾乎是瞬時完成的。
頁面加載
舊版 SkyDrive 基于服務(wù)器端渲染架構(gòu),意味著每次切換 SkyDrive 頁面,SkyDrive 會在服務(wù)器端完全生成新的頁面。這整個過程客戶端與服務(wù)器的通訊次數(shù)過多、外加沒有客戶端緩存,因此比較耗時。

得益于數(shù)千萬用戶升級至現(xiàn)代瀏覽器,新版 SkyDrive 轉(zhuǎn)向了更為智能靈活的 AJAX 架構(gòu)。數(shù)據(jù)傳輸?shù)膮f(xié)議格式也從 XML 轉(zhuǎn)變?yōu)榱?JSON。另外舊版 SkyDrive 的 ASP.NET 服務(wù)器只會在整個頁面完成渲染后返回給客戶端瀏覽器,而新版 SkyDrive 服務(wù)器則是會將完成的部分分段返回至客戶端。
但目前也僅有文件瀏覽體驗采用了AJAX 架構(gòu),部分 SkyDrive 體驗仍需要重新加載頁面(比如權(quán)限設(shè)置、刪除文件、照片排序)。這些都會在以后更新中逐步遷移到新的 AJAX 架構(gòu)。
HTTP/JSON 數(shù)據(jù)訪問協(xié)議
SkyDrive 團(tuán)隊為新版構(gòu)建了新的一套數(shù)據(jù)訪問協(xié)議,基于 HTTP 和 JSON,可快速執(zhí)行排序、篩選和分頁以滿足用戶所需數(shù)據(jù)。同時 SkyDrive 團(tuán)隊也從 SQL Server 數(shù)據(jù)庫層為此協(xié)議進(jìn)行了排序篩選方面的優(yōu)化。
此數(shù)據(jù)訪問協(xié)議所用的數(shù)據(jù)格式為 JSON,也支持客戶端緩存。并且頂級用戶數(shù)據(jù)已經(jīng)內(nèi)嵌于 HTML 頁面數(shù)據(jù)中,而不是分開請求。
列表視圖虛擬化
即類似于 Bing 圖像搜索的無限滾動,首次加載僅部分,結(jié)合滾動條判斷是否繼續(xù)加載更多數(shù)據(jù)。(可通過 Ctrl + End 測試)
客戶端緩存
分為兩層,一是瀏覽器的緩存,二是內(nèi)存內(nèi)數(shù)據(jù)緩存。內(nèi)存內(nèi)數(shù)據(jù)緩存僅對此次 SkyDrive Session 有效,可快速地在各個文件夾之間切換。同時新 SkyDrive 還為了配合列表視圖虛擬化進(jìn)行了預(yù)緩存的處理。
HTML 5
新版 SkyDrive 通過 HTML 5 實現(xiàn) CSS 動畫、Reflow動畫和其他功能,同時也用到了本地存儲作為客戶端緩存的一部分,以及保證各個現(xiàn)代瀏覽器的渲染兼容性。
但目前 SkyDrive 仍使用 Silverlight 作為其上傳控件,因為 Silverlight 可以調(diào)整上傳圖片的大小。而且 JavaScript 采用的是 jQuery框架。
官方博文: Howwe used HTML5 to make SkyDrive fast for millions of people
【編輯推薦】