前端學(xué)習(xí)總結(jié)三:性能優(yōu)化 安全

加載過程

  • DNS 解析:域名→IP 地址
  • 瀏覽器根據(jù) IP 地址向服務(wù)器發(fā)起 http 請(qǐng)求
  • 服務(wù)器處理 http 請(qǐng)求耽梅,并返回給瀏覽器

渲染過程

  • 根據(jù) HTML 代碼生成 DOM Tree
  • 根據(jù) CSS 代碼生成 CSSOM
  • 將 DOM Tree 和 CSSOM 整合成 Render Tree
  • 根據(jù) Render Tree 渲染頁面
  • 遇到<script>則暫停渲染,優(yōu)先加載并執(zhí)行 js 代碼眼姐,完成再繼續(xù)
  • 直到 Render Tree 渲染完成

windows.onload 和 DOMContentLoaded 的區(qū)別

  • windows.onload 資源全部加載完才能執(zhí)行,包括圖片視頻等
  • DOMContentLoaded DOM 渲染完成就執(zhí)行众旗,圖片視頻可能還未下載

性能優(yōu)化原則

  • 多使用內(nèi)存、緩存或其他方法
  • 減少 CPU 計(jì)算量贡歧,減少網(wǎng)絡(luò)加載耗時(shí)
  • (適用于所有的編程性能優(yōu)化——空間換時(shí)間)

讓加載得更快

  • 減少資源體積:壓縮代碼
  • 減少訪問次數(shù):合并代碼,SSR 服務(wù)端渲染(將網(wǎng)頁和數(shù)據(jù)一起加載利朵,一起渲染),緩存
  • 使用更快的網(wǎng)絡(luò):CDN

讓渲染的更快

  • CSS 放在 head绍弟,JS 放在 body 最下面
  • 盡早開始執(zhí)行 JS,用 DOMContentLoaded 觸發(fā)
  • 懶加載(圖片懶加載)
  • 對(duì) DOM 查詢進(jìn)行緩存
  • 頻繁 DOM 操作的晌柬,合并到一起插入 DOM 結(jié)構(gòu)
  • 節(jié)流 throttle 防抖 debounce

防抖 debounce

  • 監(jiān)聽一個(gè)輸入框的文字變化后觸發(fā) change 事件
  • 直接監(jiān)聽郭脂,會(huì)頻繁觸發(fā)
  • 防抖,當(dāng)用戶輸入結(jié)束或者暫停輸入是展鸡,才會(huì)觸發(fā)change 事件

function debounce(fn, delay = 500) {
    let timer = null;
    
    return function() {
        if (timer) {
            clearTimeout(timer)
        }
        timer = setTimeout(() => {
            fn.apply(this, arguments)
            timer = null
        }, delay)
    }
}

let input1 = document.getElementById('input1')
input1.addEventListener('keyup', debounce(() => {
    console.log(input1.value);
}))


節(jié)流 throttle

使用場(chǎng)景:

  • 拖拽一個(gè)元素時(shí),要隨時(shí)拿到該元素被拖拽的位置
  • 直接使用drag事件涤久,則會(huì)頻繁觸發(fā),容易導(dǎo)致卡頓
  • 節(jié)流响迂,無論速度多快,每隔 100ms 觸發(fā)一次
function throttle (fn, delay = 100) {
    let timer = null
    return function () {
        if (timer) {
            return 
        }
        timer = setTimeout(() => {
            fn.apply(this, arguments)
            timer = null
        }, delay)
    }
}

let drag1 = document.getElementById('drag1')
drag1.addEventListener('drag', throttle((e) => {
    console.log(e.offsetX, e.offsetY)
}))

安全

XSS 攻擊

場(chǎng)景:一個(gè)博客網(wǎng)站蔗彤,被人嵌入<script>腳本疯兼,腳本內(nèi)容然遏,獲取 cookie吧彪,發(fā)送到攻擊者的服務(wù)器
預(yù)防:替換特殊字符,如 < 變?yōu)?< > 變?yōu)?>

XSRF 攻擊

場(chǎng)景:商品購(gòu)買鏈接姨裸,沒有任何驗(yàn)證怨酝,則可以偽造該鏈接誘導(dǎo)用戶點(diǎn)擊
預(yù)防:使用 post 接口,增加驗(yàn)證凫碌,如密碼胃榕、驗(yàn)證碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盛险,一起剝皮案震驚了整個(gè)濱河市勋又,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌楔壤,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件递瑰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡抖部,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門慎颗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來言询,“玉大人俯萎,你說我怎么就攤上這事运杭。” “怎么了县习?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)躁愿。 經(jīng)常有香客問我,道長(zhǎng)彤钟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任营搅,我火速辦了婚禮云挟,結(jié)果婚禮上转质,老公的妹妹穿的比我還像新娘。我一直安慰自己休蟹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布赂弓。 她就那樣靜靜地躺著,像睡著了一般盈魁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杨耙,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音于毙,去河邊找鬼。 笑死蟀伸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贴彼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼溶褪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼践险!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巍虫,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎占遥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓦胎,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡尤揣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年柬祠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漫蛔。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖惩猫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情轧房,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布奶镶,位于F島的核電站,受9級(jí)特大地震影響厂镇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捺信,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秒咨。 院中可真熱鬧,春花似錦掌挚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糙置。三九已至,卻和暖如春是目,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工宜岛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留功舀,地道東北人萍倡。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓辟汰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親帖汞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子戴而,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

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