陳貴豪,葉 進(jìn),李 琳
(廣西大學(xué)計(jì)算機(jī)與電子信息學(xué)院,廣西南寧 530004)
當(dāng)前,移動(dòng)互聯(lián)網(wǎng)進(jìn)入高速發(fā)展的階段。研究報(bào)告指出[1],截至2018年12月,中國(guó)PC互聯(lián)網(wǎng)月度覆蓋人數(shù)達(dá)5.09億人,同比下降3.9%;而移動(dòng)互聯(lián)網(wǎng)月獨(dú)立設(shè)備數(shù)達(dá)到13.47億臺(tái),同比增長(zhǎng)12.8%,移動(dòng)端網(wǎng)民單日使用時(shí)長(zhǎng)已達(dá)到186 min,超過(guò)PC端的2倍。移動(dòng)互聯(lián)網(wǎng)用戶在享受高帶寬、無(wú)上限數(shù)據(jù)流量帶來(lái)便利的同時(shí),對(duì)低延遲、高響應(yīng)的需求日益增長(zhǎng)。對(duì)于移動(dòng)互聯(lián)網(wǎng)開(kāi)發(fā)人員而言,產(chǎn)品的加載性能將決定著用戶的去留,并且已經(jīng)成為與同類產(chǎn)品競(jìng)爭(zhēng)的焦點(diǎn)。
降低網(wǎng)頁(yè)加載時(shí)間(Page Load Time,PLT),尤其是用戶可感知的網(wǎng)頁(yè)加載時(shí)間,是眾多網(wǎng)頁(yè)加速技術(shù)研究的關(guān)鍵問(wèn)題。Galletta等[2]研究網(wǎng)頁(yè)延遲對(duì)用戶體驗(yàn)的影響,認(rèn)為當(dāng)網(wǎng)頁(yè)的顯示時(shí)間越長(zhǎng),用戶對(duì)網(wǎng)站的興趣逐漸降低甚至可能會(huì)放棄該網(wǎng)頁(yè)。
現(xiàn)有網(wǎng)頁(yè)加速技術(shù)研究主要從網(wǎng)絡(luò)傳輸協(xié)議、網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和網(wǎng)頁(yè)資源調(diào)度機(jī)制3個(gè)層面進(jìn)行優(yōu)化。①網(wǎng)絡(luò)傳輸協(xié)議方面:對(duì)傳統(tǒng)HTTP協(xié)議改進(jìn)和開(kāi)發(fā)SPDY[3]、HTTP/2[4]和QUIC[5]協(xié)議等,以降低網(wǎng)絡(luò)傳輸?shù)臅r(shí)延,難點(diǎn)在于需要對(duì)瀏覽器內(nèi)核的資源調(diào)度機(jī)制進(jìn)行重新更改和編譯,對(duì)于普通網(wǎng)頁(yè)開(kāi)發(fā)者而言,難度極大。②網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)優(yōu)化方面:采用增加網(wǎng)絡(luò)邊緣緩存機(jī)制,Vakali等[6]提出在靠近用戶的范圍內(nèi)部署內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network,CDN),對(duì)用戶群體密集訪問(wèn)的網(wǎng)站靜態(tài)資源進(jìn)行緩存,提升資源的命中率,但需要網(wǎng)站的所有者花費(fèi)巨額資金購(gòu)置或租用大量服務(wù)器。③網(wǎng)頁(yè)資源調(diào)度優(yōu)化方面:Wang等[7]提出對(duì)頁(yè)面資源進(jìn)行依賴分析,對(duì)頁(yè)面顯示急需的資源優(yōu)先加載。Netravali等[8]提出網(wǎng)頁(yè)加載時(shí)間取決于復(fù)雜的網(wǎng)頁(yè)資源依賴,要降低網(wǎng)頁(yè)加載時(shí)間,則需要追蹤網(wǎng)頁(yè)資源的深層次依賴關(guān)系。例如傳統(tǒng)網(wǎng)頁(yè)在加載過(guò)程中,需重點(diǎn)解決Document Object Model (DOM)結(jié)構(gòu)樹(shù)構(gòu)建被阻塞的問(wèn)題,盡可能使非必需資源異步加載。
現(xiàn)有研究還包括客戶端優(yōu)化、基于代理的加速等??蛻舳藘?yōu)化從內(nèi)容預(yù)取、預(yù)渲染和推測(cè)加載來(lái)降低網(wǎng)絡(luò)高延遲對(duì)用戶體驗(yàn)的影響,Netravali等[9]通過(guò)在Web服務(wù)器預(yù)先計(jì)算頁(yè)面的JavaScript堆和DOM樹(shù)降低頁(yè)面加載時(shí)間?;诖淼募铀賱t是從劃分客戶端和遠(yuǎn)程代理服務(wù)器之間的負(fù)載過(guò)程來(lái)提高網(wǎng)絡(luò)性能。Amazon[10]建立了客戶端與Amazon云之間的處理架構(gòu),以提供用戶更快速的移動(dòng)瀏覽體驗(yàn)。Shaghayegh等[11]針對(duì)App-like類的網(wǎng)頁(yè),提出代理服務(wù)器通過(guò)分析網(wǎng)頁(yè)結(jié)構(gòu)布局靜態(tài)資源的相似性,提取并預(yù)先傳輸相對(duì)固定的靜態(tài)資源,客戶端僅需使用較少的流量和帶寬即可填充動(dòng)態(tài)數(shù)據(jù)資源,提升加載效率。
AMP是Google公司于2016年發(fā)起的一項(xiàng)開(kāi)源代碼庫(kù)計(jì)劃,目的是改進(jìn)以Google全球搜索為中心的內(nèi)容生態(tài)系統(tǒng)[12]。
Google全球搜索對(duì)符合AMP開(kāi)發(fā)標(biāo)準(zhǔn)的網(wǎng)頁(yè)進(jìn)行自動(dòng)抓取,并將其緩存在Google的CDN。AMP網(wǎng)頁(yè)在移動(dòng)設(shè)備上的瀏覽器上以60幀的速度平穩(wěn)加載,用戶通過(guò)Google搜索到對(duì)應(yīng)網(wǎng)站的AMP網(wǎng)頁(yè),就可以體驗(yàn)網(wǎng)頁(yè)的極速加載。AMP的生態(tài)系統(tǒng)包括超過(guò)2 500萬(wàn)個(gè)網(wǎng)站、100多個(gè)技術(shù)提供商以及各大主流平臺(tái),涵蓋出版、廣告、電子商務(wù)及小型企業(yè)等領(lǐng)域[13]。
AMP由以下3個(gè)核心部件構(gòu)成[14],分別承擔(dān)網(wǎng)頁(yè)構(gòu)建、資源調(diào)度和內(nèi)容緩存的任務(wù)。
①AMP HTML。這是使用AMP技術(shù)進(jìn)行改造過(guò)的網(wǎng)頁(yè),其本質(zhì)上是在原始HTML的基礎(chǔ)上,使用自定義AMP組件拓展而成的HTML文件。經(jīng)過(guò)改造后的AMP網(wǎng)頁(yè),移除了大部分的外部網(wǎng)絡(luò)資源依賴。
②AMP JS庫(kù)。為實(shí)現(xiàn)AMP最佳性能的調(diào)度工具,它負(fù)責(zé)資源加載并處理相關(guān)的AMP標(biāo)記,最主要的優(yōu)化措施是阻塞外部資源的同步加載,僅允許外部資源異步加載。采取了以下措施:一是僅允許異步JavaScript腳本資源執(zhí)行;二是對(duì)外部媒體資源(如圖片、廣告等)必需顯式標(biāo)定尺寸、位置;三是將所有可執(zhí)行的異步JavaScript腳本設(shè)置在瀏覽器加載的非關(guān)鍵路徑下;四是設(shè)置資源加載的優(yōu)先級(jí)。
③AMP Cache。一種基于代理的內(nèi)容分發(fā)網(wǎng)絡(luò),基于Google CDN服務(wù)器集群,用于緩存符合AMP標(biāo)準(zhǔn)的HTML網(wǎng)頁(yè),搜索引擎會(huì)自動(dòng)抓取、緩存和傳輸AMP HTML網(wǎng)頁(yè)。
財(cái)政部相繼出臺(tái)的兩個(gè)關(guān)于鄉(xiāng)鎮(zhèn)財(cái)政管理改革的指導(dǎo)性的文件:《關(guān)于發(fā)揮鄉(xiāng)鎮(zhèn)財(cái)政職能作用加強(qiáng)財(cái)政預(yù)算管理的意見(jiàn)》和《關(guān)于切實(shí)加強(qiáng)鄉(xiāng)鎮(zhèn)財(cái)政資金監(jiān)管工作的指導(dǎo)意見(jiàn)》。明確了鄉(xiāng)鎮(zhèn)財(cái)政干什么的問(wèn)題,即職能問(wèn)題,在界定鄉(xiāng)鎮(zhèn)財(cái)政職能中明確了資金監(jiān)管的職責(zé),突出了鄉(xiāng)鎮(zhèn)財(cái)政管理層級(jí),全面具體的明確了鄉(xiāng)鎮(zhèn)財(cái)政的工作職責(zé)、工作目標(biāo)、工作任務(wù)和措施,彌補(bǔ)了鄉(xiāng)鎮(zhèn)財(cái)政在涉農(nóng)資金監(jiān)管工作中無(wú)位置、無(wú)職責(zé)的制度缺陷,要求將鄉(xiāng)鎮(zhèn)財(cái)政資金監(jiān)管工作,作為新形勢(shì)下鄉(xiāng)鎮(zhèn)財(cái)政的工作方向、工作重點(diǎn)來(lái)大力推進(jìn)。
AMP技術(shù)的優(yōu)勢(shì)在于,不需要對(duì)用戶客戶端的操作系統(tǒng)和瀏覽器內(nèi)核進(jìn)行修改,服務(wù)器端也無(wú)需改造,需要修改的只有前端開(kāi)發(fā)者的網(wǎng)頁(yè)源碼,同時(shí)結(jié)合并兼容了已有的CDN服務(wù),從網(wǎng)頁(yè)資源調(diào)度和網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)兩方面降低網(wǎng)頁(yè)加載時(shí)間。
網(wǎng)頁(yè)加載時(shí)間PLT是衡量網(wǎng)頁(yè)加載性能的重要指標(biāo)。影響網(wǎng)頁(yè)加載時(shí)間的網(wǎng)絡(luò)環(huán)境因素一般有最小往返時(shí)間(Minimum Round Trip Time,min_RTT,以下簡(jiǎn)稱最小RTT)、丟包率和網(wǎng)絡(luò)帶寬3個(gè)因素[15]。網(wǎng)頁(yè)加載時(shí)間的計(jì)算公式如式(1)所示。
(1)
式中:第1項(xiàng)min_RTT表示從瀏覽器發(fā)起請(qǐng)求至接收到第1個(gè)HTTP響應(yīng)的第1個(gè)字節(jié)的最小RTT(忽略服務(wù)器的響應(yīng)與處理時(shí)間)。第2項(xiàng)表示在一個(gè)確定帶寬的鏈路上將網(wǎng)頁(yè)所有對(duì)象回傳所需要的最少時(shí)間,其中B為網(wǎng)頁(yè)大小,單位為Mbit;C為鏈路帶寬,單位為Mbps。第3項(xiàng)T表示瀏覽器將所有網(wǎng)頁(yè)頁(yè)面渲染,且所有異步資源完成加載所需的時(shí)間,即瀏覽器處理時(shí)間。
網(wǎng)頁(yè)加載時(shí)間與流行度緩存機(jī)制的應(yīng)用相關(guān),本研究將網(wǎng)頁(yè)加載時(shí)間與網(wǎng)頁(yè)流行度進(jìn)行數(shù)學(xué)分析。流行度(Popularity)是用于描述確定時(shí)間內(nèi)網(wǎng)站中網(wǎng)頁(yè)被訪問(wèn)的頻數(shù)及其訪問(wèn)排名的關(guān)系的概率分布。將網(wǎng)頁(yè)作為測(cè)試樣本集合P,集合P內(nèi)的網(wǎng)頁(yè)訪問(wèn)排名和訪問(wèn)頻數(shù)滿足冪率Zipf概率模型[16,17]。該冪律模型能夠精確描述短時(shí)間內(nèi)網(wǎng)頁(yè)訪問(wèn)的流行度,其服從概率質(zhì)量函數(shù)。式(2)給出了基于流行度的概率質(zhì)量函數(shù)。
(2)
式中:N是網(wǎng)頁(yè)組數(shù);k是相應(yīng)網(wǎng)頁(yè)的頻數(shù)排名;s是網(wǎng)頁(yè)訪問(wèn)的流行度,s越大表征用戶訪問(wèn)集合中的網(wǎng)頁(yè)較為集中,反之,越小則比較平均或分散。在反向代理服務(wù)器中設(shè)置固定的有限緩存空間和替換算法,以構(gòu)造具有網(wǎng)頁(yè)訪問(wèn)流行度的測(cè)試樣本集合。
訪問(wèn)網(wǎng)頁(yè)存在2種情況:①該網(wǎng)頁(yè)在反向代理服務(wù)器緩存空間中;②該網(wǎng)頁(yè)不在反向代理服務(wù)器中,需要到源服務(wù)器繼續(xù)查找。第1種情況的平均查找時(shí)間設(shè)置為α,第2種情況的平均查找時(shí)間設(shè)置為β。網(wǎng)頁(yè)在反向代理服務(wù)器查找到的概率與該網(wǎng)頁(yè)的冪律模型和該網(wǎng)頁(yè)的頻數(shù)排名有關(guān),因此式(1)中的min_RTT可定義為
min_RTT=f(k)×α+(1-f(k))×β。
(3)
結(jié)合式(2)可得出式(4),即基于流行度的PLT計(jì)算式:
PLT=f(k)×α+(1-f(k))×β+
(B/C)+T。
(4)
由式(4),以N=300為例,圖1給出截取網(wǎng)頁(yè)頻數(shù)排名前20的網(wǎng)頁(yè),展示網(wǎng)頁(yè)加載時(shí)間PLT分別關(guān)于流行度s、鏈路帶寬C的函數(shù)關(guān)系分析。
需要特別指出的是,瀏覽器處理時(shí)間T與軟硬件性能相關(guān),因此只做鏈路帶寬C與流行度s的定量分析。在此,網(wǎng)頁(yè)大小B和瀏覽器處理時(shí)間T均取平均值,分別為2.56 Mbit和2 s,網(wǎng)頁(yè)在服務(wù)器查找時(shí)間α、β分別取0.05,0.1 s。圖1a中流行度s=1,圖1b中鏈路帶寬C=100 Mbps。
(a) 鏈路帶寬C;(b) 流行度s
如圖2所示,使用3臺(tái)服務(wù)器主機(jī)與1臺(tái)客戶機(jī)在局域網(wǎng)內(nèi)搭建測(cè)試環(huán)境,使用一個(gè)交換帶寬為300 Mbps的路由器有線連接組網(wǎng),從任意主機(jī)到路由器的平均ping值均小于1 ms,用于模擬真實(shí)環(huán)境下,用戶通過(guò)反向代理服務(wù)器訪問(wèn)網(wǎng)站源服務(wù)器的應(yīng)用場(chǎng)景。其中:源服務(wù)器1,2均用于部署抓取到本地的網(wǎng)頁(yè)資源,使用Apache作為Web服務(wù)器軟件[18]。2臺(tái)服務(wù)器網(wǎng)頁(yè)資源自動(dòng)同步,且以源服務(wù)器1為參照。反向代理服務(wù)器使用Nginx作為Web服務(wù)器軟件[19],使用權(quán)重相同的輪詢方式依次訪問(wèn)源服務(wù)器1,2。客戶機(jī)在局域網(wǎng)內(nèi)部通過(guò)反向代理服務(wù)器請(qǐng)求并獲取網(wǎng)頁(yè)資源。
圖2 測(cè)試環(huán)境網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖
設(shè)計(jì)9組交叉對(duì)比實(shí)驗(yàn),分別測(cè)試在不同網(wǎng)絡(luò)環(huán)境下(表1給出網(wǎng)絡(luò)環(huán)境參數(shù)配置)騰訊新聞、CNBC新聞和VOX新聞3個(gè)網(wǎng)站的AMP網(wǎng)頁(yè)(AMP Page)和原版網(wǎng)頁(yè)(Canonical page)的網(wǎng)頁(yè)加載時(shí)間差異。每組測(cè)試在3個(gè)網(wǎng)站中各隨機(jī)選取相同的100組網(wǎng)頁(yè)(包括AMP網(wǎng)頁(yè)和原版網(wǎng)頁(yè)),共300組網(wǎng)頁(yè)。
表1 測(cè)試環(huán)境參數(shù)配置
針對(duì)上述3個(gè)網(wǎng)站結(jié)構(gòu)進(jìn)行分析,設(shè)計(jì)并實(shí)現(xiàn)了分別針對(duì)3個(gè)網(wǎng)站的、基于Python語(yǔ)言及pyquery框架的腳本,用于解析和抓取網(wǎng)頁(yè)文檔資源。為便于進(jìn)行自動(dòng)化性能測(cè)試,將同一頁(yè)面的AMP網(wǎng)頁(yè)和原版網(wǎng)頁(yè)通過(guò)重命名進(jìn)行區(qū)分。表2為AMP網(wǎng)頁(yè)和原版網(wǎng)頁(yè)在訪問(wèn)URL上,通過(guò)路徑/canonical/和/amp/進(jìn)行區(qū)分,其中[NEWS]的枚舉值集合為{qqnews,cnbc,vox}。
表2 同一頁(yè)面的AMP網(wǎng)頁(yè)和原版網(wǎng)頁(yè)的URL
使用Selenium自動(dòng)化測(cè)試套件、Mahimahi網(wǎng)絡(luò)環(huán)境模擬工具、Trickle帶寬控制工具和Firefox瀏覽器進(jìn)行組合測(cè)試。Selenium是為瀏覽器開(kāi)發(fā)者或網(wǎng)頁(yè)開(kāi)發(fā)者提供的自動(dòng)化測(cè)試套件[20]。Mahimahi是由MIT的Netravali開(kāi)發(fā)并在USENIX會(huì)議上提出的,用于模擬網(wǎng)絡(luò)環(huán)境并記錄HTTP協(xié)議請(qǐng)求過(guò)程的工具[15]。Trickle是由Google的Marius開(kāi)發(fā)并在USENIX會(huì)議上提出的,用于在Unix/類Unix系統(tǒng)上對(duì)網(wǎng)絡(luò)帶寬進(jìn)行控制和整形的工具[21]。Firefox瀏覽器是由Mozilla基金會(huì)支持的開(kāi)源項(xiàng)目[22]。
圖3給出自動(dòng)化性能測(cè)試流程。首先使用Trickle限制系統(tǒng)的網(wǎng)絡(luò)帶寬,Mahimahi用于限制系統(tǒng)網(wǎng)絡(luò)請(qǐng)求的最小RTT和丟包率;然后自動(dòng)化腳本將自動(dòng)讀取并調(diào)用Selenium控制瀏覽器批量加載網(wǎng)頁(yè);最后Firefox根據(jù)腳本的調(diào)用加載指定的AMP網(wǎng)頁(yè)和原版網(wǎng)頁(yè)。
圖3 自動(dòng)化性能測(cè)試流程圖
設(shè)計(jì)并實(shí)現(xiàn)自動(dòng)化測(cè)試腳本,用于自動(dòng)獲取網(wǎng)頁(yè)資源地址,使用Selenium Driver提供的系統(tǒng)接口,調(diào)用Firefox官方提供的驅(qū)動(dòng)程序Geckodriver,遠(yuǎn)程控制Firefox瀏覽器加載指定網(wǎng)頁(yè),并通過(guò)控制臺(tái)模塊執(zhí)行JavaScript腳本,讀取JavaScript運(yùn)行環(huán)境的堆棧信息。
Firefox瀏覽器的設(shè)計(jì)嚴(yán)格遵循W3C提出的相關(guān)標(biāo)準(zhǔn)。Firefox提供了在JavaScript運(yùn)行環(huán)境內(nèi)調(diào)取網(wǎng)頁(yè)加載時(shí)間點(diǎn)的接口window.Performance.timing[23]。本文定義的網(wǎng)頁(yè)加載時(shí)間可根據(jù)計(jì)算domContentLoadedEventEnd時(shí)間點(diǎn)和navigationStart時(shí)間點(diǎn)之差得到。
自動(dòng)化測(cè)試腳本在每次運(yùn)行前需要將Firefox瀏覽器的緩存和Cookie徹底清空,同時(shí)需要將Firefox設(shè)置為“每次關(guān)閉Firefox時(shí)刪除Cookie與網(wǎng)站數(shù)據(jù)”。腳本在每次執(zhí)行打開(kāi)網(wǎng)頁(yè)任務(wù)時(shí),均調(diào)用browser.delete_all_cookies(),以防瀏覽器再次訪問(wèn)相同網(wǎng)頁(yè)時(shí)直接讀取瀏覽器內(nèi)部緩存,導(dǎo)致網(wǎng)頁(yè)加載時(shí)間的記錄失真。
在搭建的實(shí)驗(yàn)環(huán)境中,本文在表2給出的網(wǎng)絡(luò)環(huán)境配置參數(shù)下,對(duì)3個(gè)網(wǎng)站的AMP網(wǎng)頁(yè)和原版網(wǎng)頁(yè)分組(Page Groups)進(jìn)行網(wǎng)頁(yè)加載測(cè)試,取中位數(shù)值和占總數(shù)95%的網(wǎng)頁(yè)加載時(shí)間值。圖4為AMP網(wǎng)頁(yè)加載時(shí)間相對(duì)于原版網(wǎng)頁(yè)的降低比例曲線(Plt reduction ratio)。
圖4中,min_RTT 為50 ms時(shí),PLT降低比例最高的是88.61%;Loss為20%時(shí),PLT降低比例最高的是94.17%;Bandwidth為1 Mbps時(shí),PLT降低比例最高的是92.46%。結(jié)果表明,最小RTT的升高或丟包率的升高,都將導(dǎo)致AMP網(wǎng)頁(yè)加載時(shí)間總體逐步上升,AMP網(wǎng)頁(yè)的性能表現(xiàn)好,加載時(shí)間可容忍,而網(wǎng)絡(luò)帶寬的降低對(duì)AMP網(wǎng)頁(yè)加載時(shí)間總體影響有限。
圖4 不同網(wǎng)絡(luò)環(huán)境下AMP網(wǎng)頁(yè)加載時(shí)間降低比例
在min_RTT為200 ms,丟包率為0和帶寬為100 Mbps的網(wǎng)絡(luò)環(huán)境中,分別設(shè)置不使用流行度(w/o s)與使用流行度s={1,0.5,0.25}的緩存機(jī)制,進(jìn)行300組網(wǎng)頁(yè)加載測(cè)試,并得到AMP網(wǎng)頁(yè)加載時(shí)間的累積分布曲線(Cumulative Distribution Function,CDF),如圖5所示。結(jié)果表明,在相同網(wǎng)絡(luò)環(huán)境中,流行度緩存機(jī)制可以使AMP網(wǎng)頁(yè)加載時(shí)間最高降低44%。
圖5 流行度緩存機(jī)制下AMP網(wǎng)頁(yè)加載時(shí)間的累積分布曲線
獲得上述結(jié)果主要?dú)w結(jié)于以下3個(gè)方面:
①在網(wǎng)頁(yè)結(jié)構(gòu)方面。AMP HTML內(nèi)的CSS資源完全內(nèi)聯(lián)于文檔內(nèi)部,對(duì)圖片等媒體資源需要標(biāo)定尺寸。內(nèi)聯(lián)的JavaScript腳本不可同步執(zhí)行,對(duì)于外部鏈接的JavaScript資源必須使用async屬性顯式標(biāo)定。從本次實(shí)驗(yàn)的所有網(wǎng)頁(yè)的結(jié)構(gòu)上看,渲染和顯示資源大部分內(nèi)聯(lián)于網(wǎng)頁(yè)文檔之內(nèi),騰訊新聞、CNBC新聞和VOX新聞的AMP網(wǎng)頁(yè)相比于原版網(wǎng)頁(yè)需要發(fā)起的網(wǎng)絡(luò)請(qǐng)求更少,因此在min_RTT、丟包率和網(wǎng)絡(luò)帶寬方面均占有優(yōu)勢(shì)。
②在資源調(diào)度機(jī)制方面。AMP JS在網(wǎng)頁(yè)渲染加載期間,阻止瀏覽器按照資源在頁(yè)面內(nèi)的順序排布次序進(jìn)行加載,優(yōu)先對(duì)CSS結(jié)構(gòu)樹(shù)進(jìn)行渲染,優(yōu)先構(gòu)建DOM結(jié)構(gòu)樹(shù),阻斷任何將要阻塞DOM結(jié)構(gòu)樹(shù)構(gòu)建的JavaScript腳本的解析。3種新聞網(wǎng)站原版頁(yè)面內(nèi)的資源排布比較雜亂,除騰訊新聞的原版網(wǎng)頁(yè)在資源排布上比較接近AMP網(wǎng)頁(yè)之外,內(nèi)聯(lián)的JavaScript腳本可以隨時(shí)阻塞DOM的構(gòu)建。相比之下,AMP網(wǎng)頁(yè)的資源調(diào)度機(jī)制更優(yōu)。
③在流行度緩存機(jī)制方面。具有流行度緩存機(jī)制的代理服務(wù)器通過(guò)緩存網(wǎng)頁(yè)訪問(wèn)的相關(guān)資源,提高網(wǎng)頁(yè)資源在代理緩存中的命中率,從網(wǎng)絡(luò)傳輸方面進(jìn)一步降低傳輸時(shí)間。同時(shí)也印證了AMP需要依靠Google的CDN服務(wù)器集群中運(yùn)行的AMP Cache,這對(duì)于提升網(wǎng)絡(luò)資源傳輸效率具有十分重要的作用。
本文通過(guò)對(duì)網(wǎng)頁(yè)加載時(shí)間和用戶體驗(yàn)的研究,對(duì)Google AMP網(wǎng)頁(yè)加速技術(shù)進(jìn)行分析、研究和自主設(shè)計(jì)實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,AMP相對(duì)于原版網(wǎng)頁(yè),最高可降低94.17%;即使在總體網(wǎng)絡(luò)環(huán)境為最小往返時(shí)間和丟包率較高、網(wǎng)絡(luò)帶較低的惡劣情況下,網(wǎng)頁(yè)加載時(shí)間最高仍能降低92.46%,同時(shí)在啟用流行度緩存機(jī)制的情況下,最高可再降低44%。然而,AMP性能提升的代價(jià)和成本要轉(zhuǎn)移到網(wǎng)頁(yè)開(kāi)發(fā)者,開(kāi)發(fā)復(fù)雜度的上升和開(kāi)發(fā)周期的延長(zhǎng),意味著AMP在開(kāi)發(fā)架構(gòu)上仍有改進(jìn)和提升空間。AMP與Google最新推出的應(yīng)用層傳輸協(xié)議QUIC結(jié)合使用,將有助于進(jìn)一步提升其性能[24],也是下一步的研究方向。