針對低網(wǎng)速的性能優(yōu)化

在過去的一段時間难咕,隊(duì)友在性能優(yōu)化方面做了很多工作翘紊。我現(xiàn)在在這里默默總結(jié)藐唠,希望能夠追上隊(duì)友的腳步~
此次優(yōu)化主要針對的是漫畫手機(jī)站。相比于PC端的網(wǎng)絡(luò)踪宠,移動端的網(wǎng)絡(luò)環(huán)境有著自己的特點(diǎn):網(wǎng)絡(luò)不穩(wěn)定妈嘹,低網(wǎng)速的情況出現(xiàn)的比較頻繁。此次優(yōu)化的目的是為了讓用戶在低網(wǎng)速的情況下也能夠擁有更好的體驗(yàn)柬脸。

作為一個以漫畫為主題的網(wǎng)站毙驯,圖片一直是流量的大頭。如果能夠提高圖片的加載速度垦巴,那么頁面的性能就能夠有一個顯著的提升铭段。所以這次優(yōu)化的思路很簡單:在低網(wǎng)速的情況下選擇加載質(zhì)量更低的圖片

那么稠项,如何去測量網(wǎng)速呢?

圖片的加載時機(jī)一定是越早越好,所以我們期望能拿到從瀏覽器發(fā)起請求到頁面開始加載前的那段時間的網(wǎng)絡(luò)狀況精刷。恰巧window.performance提供的API可以實(shí)現(xiàn)這個功能。window.performance上的每一個屬性都有一個默認(rèn)值0埂软。當(dāng)對應(yīng)的事件發(fā)生時勘畔,對應(yīng)屬性的值被賦予事件發(fā)生時的時間戳。為了測量網(wǎng)速炫七,我們考慮了以下事件:

  • fetchStart 瀏覽器開始請求資源的事件
  • responseEnd 響應(yīng)報文接收結(jié)束時的事件

注:其中有一個requestStart事件,看起來與fetchStart類似侠驯。其中fetchStart事件發(fā)生在DNS查找和建立TCP連接之前奕巍,而requestStart發(fā)生在建立TCP連接之后,開始發(fā)送請求報文的時候檩坚。

通過計(jì)算fetchStartresponseEnd的差值诅福,就能夠大致估算出用戶當(dāng)前的網(wǎng)絡(luò)狀況。

主要步驟

  • 圖片存儲在NOS上剩檀,可以通過URL中的參數(shù)控制請求圖片的質(zhì)量
  • 通過輪詢的方式監(jiān)聽responseEnd事件是否發(fā)生沪猴,為當(dāng)前網(wǎng)絡(luò)狀況定性采章,快或慢。
  • 采用懶加載的方式加載圖片悯舟。根據(jù)網(wǎng)絡(luò)狀況的不同,加載不同質(zhì)量的圖片奋救。

部分代碼

// 測量網(wǎng)絡(luò)狀況
if (typeof performance != 'undefined' && typeof performance.timing != 'undefined') {
    window.detectPerformance = function () {
        var performanceTiming = performance.timing;

        if (performanceTiming.responseEnd == 0) {
            setTimeout(window.detectPerformance, 20);
            return;
        }

        var latency = performanceTiming.responseEnd - performanceTiming.fetchStart;

        if (latency >= 550) {
            window.SLOW_NETWORK = true;
        }
    }

    window.detectPerformance();
}

寫在最后

這種優(yōu)化方案實(shí)現(xiàn)起來簡單尝艘,而且玩法不僅限于控制圖片質(zhì)量姿染。大家可以一起發(fā)掘出更多的玩法~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市狡汉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寄锐,老刑警劉巖捻脖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沿癞,居然都是意外死亡矛渴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門具温,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人揖铜,你說我怎么就攤上這事天吓。” “怎么了物邑?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鹦蠕。 經(jīng)常有香客問我,道長肠阱,這世上最難降的妖魔是什么走趋? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任噪伊,我火速辦了婚禮鉴吹,結(jié)果婚禮上豆励,老公的妹妹穿的比我還像新娘技扼。我一直安慰自己,他們只是感情好串纺,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布魔招。 她就那樣靜靜地躺著,像睡著了一般杆逗。 火紅的嫁衣襯著肌膚如雪蠕蚜。 梳的紋絲不亂的頭發(fā)上靶累,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天潮酒,我揣著相機(jī)與錄音,去河邊找鬼侧到。 笑死故源,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的著蛙。 我是一名探鬼主播踏堡,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逐纬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起漫贞,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤芍殖,失蹤者是張志新(化名)和其女友劉穎龟梦,沒想到半個月后变秦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體框舔,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了停士。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜻底,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抠璃,到底是詐尸還是另有隱情窿春,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布纽甘,位于F島的核電站悍赢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏痴颊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望量没。 院中可真熱鬧殴蹄,春花似錦刺下、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筋现。三九已至矾飞,卻和暖如春豹绪,著一層夾襖步出監(jiān)牢的瞬間瞒津,已是汗流浹背巷蚪。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留功戚,地道東北人届宠。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓豌注,卻偏偏與公主長得像每聪,于是被迫代替她去往敵國和親药薯。 傳聞我的和親對象是個殘疾皇子救斑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容