經過精心設計的 JavaScript
為了去除臃腫的客戶端腳本,MIP 文件不允許自定義 JavaScript;對一些強依賴 JavaScript 的功能(如:廣告、統計和交互),MIP 提供與 MIP runtime 兼容的封裝好的組件來實現。
JavaScript 引用原則:
目前 MIP 不允許用戶自定義 JavaScript,需要用 MIP 組件的形式引進來,從而確保安全性和性能表現
可以引用 mip-iframe 來引入實現部分富交互的功能,這樣,即使開發時使用最影響性能的 document.write,也不會影響主頁面的渲染
MIP 組件是開源的,允許開發者自定義功能組件,項目也將持續提供多樣的組件,以適應不同的需求
所有靜態資源需要標明尺寸
在頁面開發時,資源常常不會被設定寬高,特別是使用廣告或者通過調用 `document.write() 注入的時候。由于資源大小不能確定,頁面經常要進行反復重新的繪制;
現在,MIP 要求將所有的資源(廣告、圖片、音頻和視頻)標明尺寸。當資源真正加載時,所有資源大小可以被立即推斷出并迅速的用于計算頁面布局,加載中的資源將無縫呈現,不必因為頁面頻繁更新布局而影響到用戶的閱讀體驗。
不允許任何機制阻止頁面渲染
開發者的任何自定義腳本,都需要用 MIP 的 tag 反饋給 MIP,例如 mip-ad、mip-iframe 等,這些方式不會阻塞頁面的 layout 和渲染。
控制外部資源加載
MIP runtime 會控制外部資源的額加載來確保其高效性,從而使用戶想閱讀的內容盡快出現在屏幕中。
封裝交互功能
MIP 提倡網頁能給用戶直接簡單的體驗,但這并不意味著 MIP 限制了頁面的生動和有趣。MIP runtime 提供了高度優化的被封裝的 JavaScript,開發者無需投入過多精力去實現復雜的交互功能。
建議使用 inline 的 css
css 的加載,會阻止頁面的渲染,css 內聯可以減少客戶端的開銷。
只允許 GPU 加速的動畫
MIP 只允許用 transforms 和 opacity 來完成動畫效果,當動畫能在 GPU 上執行時,僅觸發渲染層合并。
MIP 緩存
MIP 另一個重要的意義在于能夠幫站長加速網頁,百度將會把 MIP 網頁緩存到百度 CDN 中。只要符合 MIP 標準,都可以使用 MIP 緩存。
開放且持續更新
MIP 是一個開源項目,所有的標準并非一成不變。我們會持續不斷進行優化,期待您的共同參與!