谷歌AMP和百度MIP是什麽鬼?
首先我們來看定義:
谷歌AMP(Accelerated Mobile Pages,加速移動頁面)是Google推出的一種為靜態內容構建 web 頁面,提供可靠和快速的渲染,加快頁面加載的時間,特別是在移動 Web 端查看內容的時間。
百度MIP (Mobile Instant Pages - 移動網頁加速器), 是一套應用於移動網頁的開放性技術標準。通過提供MIP-HTML規範、MIP-JS運行環境以及MIP-Cache頁面緩存系統,實現移動網頁加速。
看起來兩者的定義很相似,一個叫加速移動頁面,一個叫移動網頁加速器,實現目的也是相同的——優化移動網頁。WTF,不會是一個東西吧。當然不是一個東西,但是不過只是老壇酸菜面和康師傅牛肉面的不同而已。兩者都是方便面,主要原材料相同,配方有點不同,制作的方式有點差別,最重要的是代言人不同。
移動網頁加速最早是谷歌提出來的,通過制定開源標準,制定頁面規範,優化渲染速度來提高用戶體驗,並且谷歌會搜索引擎中,對符合AMP標準頁面增加權重。百度堅持谷歌有我也要有的原則,充分借鑒了AMP,也提出了自己的網頁加速開源標準,於是MIP誕生了。
百度MIP無論是目的(在搜索結果中返回極快速移動頁面),還是原理(簡化HTML、CSS、禁用大部分JS、資源控制、緩存等,還是推出步驟(先新聞,再一般頁面),還有原頁面與MIP頁面的互相引用方法(加標簽),都和Google AMP一樣,連官網的頁面布局、菜單安排、技術說明裏的內容,幾乎都是一樣的。就連在對應搜索引擎上展示的標識幾乎也是一模一樣的:
這裏不得不佩服國人的借鑒能力。
頁面優化原理
AMP和MIP都是本質上都是通過優化頁面渲染或者延遲加載,減少阻塞的原理來實現頁面的加速。就像我們企業內部的一些規範一樣,我們可能也有一套標準來提高我們的代碼質量和頁面性能。只不過這兩個能夠給我們帶來SEO的優化。下面,我們就一MIP為例,了解一下她加速的原理。
MIP主要由三部分組織成:
MIP HTML
MIP JS
MIP Cache
MIP HTML 基於HTML中的基礎標簽制定了全新的規範,通過對一部分基礎標簽的使用限制或功能擴展,使HTML能夠展現更加豐富的內容;MIP JS 可以保證 MIP HTML 頁面的快速渲染;MIP Cache 用於實現MIP頁面的高速緩存,從而進一步提高頁面性能。
下面將介紹MIP頁面的加速原理:
經過精心設計的javascript
MIP不允許用戶自定義JavaScript,需要用MIP 組件的形式引進來,從而確保安全性和性能表現
所有靜態資源需要標明尺寸
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緩存。
這些都是我們在優化web項目中經常用到的手段而已,只不過現在百度通過開源標準,並且給予SEO的甜頭,給予統一規範。
谷歌AMP和百度MIP的看法
AMP和MIP提供的移動網頁優化方案在一定程度上能夠提高用戶的體驗。同時與seo的結合,也提高了很多開發者加入的興趣。但是,由於比較封閉的環境,這套標準無法應用於大型的項目,只能應用於比較簡單的頁面展示,當然,這個與他們的初衷是一致的。
AMP和MIP是兩套不同的標準,為了支持谷歌和百度兩套搜索引擎的優化,必須寫兩套頁面,這會增加開發者的開發成本。
在未來,我個人認為,兩家的標準會趨向統一,百度估計會支持AMP標準,畢竟谷歌是站在全球的角度上的,百度只在中國的用戶比較多。
谷歌AMP和百度MIP是什麽鬼?