非侵入式頁面載入完成檢測的一些想法

Mondo 科技 更新 2024-02-15

在眾多效能指標中,完成頁面載入所需的時間是非常重要的,尤其是對於關鍵頁面,例如詳情頁,1秒開啟和3秒開啟有很大的差異,直接影響GMV。

我們來談談頁面載入完成的定義,不是頁面布局完成,不是請求完成,而是 ** 和 text 都已經呈現出來了。 更常見的做法是在頁面上viewdidappear而請求完成並將資料轉換為模型後,前者表示頁面出現的時間,後者表示獲取資料的時間,基本可以反映頁面載入時間。 但也存在一些問題,例如:

業務經常調整,所以埋點也需要調整,在這個過程中容易出現誤埋漏的問題。 有些頁面會有多個請求,只有這些請求都完成後才能呈現頁面,然後資料請求跟蹤會有點麻煩。 這些時間點仍然會與使用者實際看到的時間不同,這還不夠準確。 因此,非侵入性檢測機制很重要。 我碰巧看到使用影象識別自動確認掘金上網頁載入成功,我受此啟發,覺得這條路上有很多戲劇性。 推送呈現頁面時,每隔一段時間擷取一次螢幕截圖,並分析當前頁面空白(實心)部分的比例,如果超過某個閾值,則認為該頁面尚未載入。 這裡有幾點需要注意:

需要主動檢視截圖,載入完成時無法告知。不同之處在於,沒有辦法確切地知道負載何時完成。 有些頁面被刻意設計成有很多空白,這不容易判斷。 未載入 完成 不同的頁面會有不同的行為。 當使用者滑動時,有可能上一頁已經載入好了 最簡單的解決辦法就是把**上的每乙個畫素都拿出來放進字典裡,然後如果有顏色值相同的畫素,那麼count++。問題也很明顯,乙個螢幕上有幾十萬個點,這一輪還沒分析,使用者已經開啟了第二頁。

回到你想要實現的目標:純色的比例。 將**壓縮到更小的尺寸不是很好嗎? 老套路,鋪開畫布,把**倒在上面。

+ (uiimage *)imagewithimage:(uiimage *)image scaledtosize:(cgsize)newsize
現在是真正的計算,這是乙個相對簡單的過程:

將 uiimage 轉換為 cgimage datacgdataproviderref provider = cgimagegetdataprovider(image.cgimage);cfdataref pixeldata = cgdataprovidercopydata(provider);const uint8* data = cfdatagetbyteptr(pixeldata);long datalength = cfdatagetlength(pixeldata);int numberofcolorcomponents = 4;r,g,b,a用於儲存顏色,key為r-g-b字串,value為出現次數nsmutabledictionary *colors = [[nsmutabledictionary alloc] init]; int colorcount = 0;for (int i = 0; i < datalength);i += numberofColorComponents) else } 按出現次數排序 nsarray *sortedcolorcount = [colors.allvalues sortedarrayusingcomparator:^nscomparisonresult(id _nonnull obj1, id _nonnull obj2) ]nsmutablearray *percent = [[nsmutablearray alloc] init];計算比例並按從高到低的順序排序,取前 10 個[sortedcolorcount enumerateobjectsusingblock: (nsnumber *count, nsuinteger idx, bool * nonnull stop) percent addobject:@(count intvalue] (float)(colorcount))] return [percent copy];
把它放在第一位uiimage轉換為cfdataref並再次遍歷它color,以相同color最後積累並整理它們。

返回的資料如下所示:

這為您提供了顏色的百分比。

假設超過30%的純色區域沒有滿載,我們找幾個demo來測試一下

結果符合“未完成載入”定義。

另乙個。

雖然未載入,但結果小於 30%。

如果將該值設定為較小的值,則可能會發生意外殺戮,例如此介面。

結果。

這個介面已經載入過了,但是因為留空比較多,所以純色的比例也比較多,如果按照前面的公式,會誤傷的,怎麼解決這個問題,後面我們再討論。

讓我們看一下另乙個尚未完成載入的頁面:

這是這個頁面的結果。

如果載入了中間部分(即面積最大的部分),則它變為。

這也是不載入頁面的新規則。

我們來看一下純色比例截圖分析的問題:

當每 n 秒擷取一次螢幕截圖時,使用者可能會滑動到螢幕 2,此時螢幕 1 已載入,但螢幕 2 未載入,因此不應屬於頁面載入未完成的類別。 不同頁面的純色特性不同,有的比較分散,有的在正常情況下會有更多的純色,所以很容易誤判。 我還沒有想到乙個特別好的方法來處理場景 1,但一種方法是確定執行迴圈的模式是否等於uitrackingrunloopmode判斷是否有滑倒,不是很優雅,但可能會起作用。

對於場景 2,可以將資料傳送到伺服器,讓伺服器計算某個頁面的純色分布,例如大部分< 10%,少數超過 20%,那麼就可以判斷載入沒有完成,但成本還是有點高。

因此,雖然該方案可以是非侵入性的,但在結果判斷上仍存在一些不足,有望推出更成熟的方案。

相關問題答案

    apex卡在載入頁面怎麼辦? 載入問題是這樣解決的

    apex卡在載入頁面怎麼辦?載入問題是這樣解決的 相信很多玩家都很期待APEX 賽季的更新,其實APEX賽季將於月日上線,而這次的賽季發生了很多事情變化,比如排名機制和複製器 護甲等玩法內容的變化。很多玩家在遇到apex卡在載入頁面的問題時不知道該怎麼辦,下面就來教大家如何解決吧。.優化網路。第 步...

    Steam頁面無法載入,打不開怎麼辦

    steam頁面無法載入,打不開怎麼辦?Steam不僅是乙個遊戲平台,也是乙個強大的社交平台。使用者可以與朋友一起玩遊戲,建立和加入遊戲組,參與討論,分享遊戲創意。通過Steam社交功能,玩家可以結識新朋友,參加各種活動和比賽,體驗更多有趣的社互動動。很多玩家在Steam上玩的時候,經常會遇到網頁載入...

    極限競速地平線 5 卡片載入介面,頁面一直旋轉著分享解決方案

    極限競速地平線 卡片載入介面,頁面一直旋轉著分享解決方案 該遊戲是一款驚心動魄的賽車遊戲,玩家扮演賽車手的角色,在地圖上進行賽車比賽。該地圖以墨西哥為背景,包括活火山 叢林和海灘等區域。此外,遊戲還引入了乙個新的天氣系統,地圖上有多種氣候和四個季節變化,影響周圍的生物群落。還有許多新功能和迷你多人遊...

    非侵入式監控 辦公室計算機螢幕監控的私隱慣例

    在當今的數字時代,企業越來越關注員工的生產力和資料安全。為了實現更有效的管理,確保資訊保安,一些公司選擇採用非侵入式監控技術,其中包括對辦公室電腦螢幕的監控。然而,如何在尊重員工私隱的同時保護企業利益,成為亟待解決的挑戰。非侵入式監控技術是基於對計算機螢幕進行截圖或錄音,以了解員工的工作狀態和行為。...

    劉繼鵬被封禁,頁面顯示“違規不能關注”。

    近日,備受矚目的專家劉繼鵬因某種原因被社交平台封禁,引發廣泛關注和熱議。劉繼鵬一直是一位經濟學家,以積極呼籲公升至點而聞名。然而,這些激進的主張也引發了一些爭議。雖然他的言論在 有一定的影響力,但對於社交 平台來說,限制大股東 的激烈言論可能已經違反了相關規定,導致他被封禁。劉繼鵬一直堅決主張將 漲...