第十六章 執行環境

2022-07-24 05:57:11 字數 2200 閱讀 8730

執行環境

網頁載入過程

題目:

知識點:

資源的形式

載入過程

瀏覽器根據 ip 位址向伺服器發起 http 請求(三次握手)

伺服器處理 http 請求,並返回給瀏覽器

渲染過程1

渲染過程2

為什麼建議把 css 放在 head 中?

dom tree 從上到下執行,如果 css 沒有放到頭部,而是放到了尾部,會先 dom 結構渲染出來而沒有樣式,直到遇到 css 才會將 css 與 dom tree 結合

為什麼建議把 js 放在 body 最後?

js**會阻塞頁面的渲染

window.onload 和 domcontentloaded 的區別

window.addeventlistener('load', function () )

document.addeventlistener('domcontentloaded', function () )

效能優化的方式

效能優化是乙個綜合性問題,沒有標準答案,但要求盡量全面,某些細節問題可能會單獨提問:手寫防抖、節流

效能優化原則

從何入手

讓載入更快

讓渲染更快

示例講解

快取:配置 webpack 壓縮時 hash 值,根據檔案內容計算 hash 值。檔案內容不變,則hash 不變,則 url 不變。url 和檔案不變,則會自動觸發 http 快取機制,返回 304(資源未被修改,可以使用本地快取)

ssr:(ssr)服務端渲染,將網頁和資料一起載入,一起渲染;非ssr(前後端分離),先載入網頁,再載入資料,然後渲染資料。早先的 jsp asp php,現在 vue react ssr。

懶載入:

手寫防抖(debounce)
const input1 = document.getelementbyid('input1')

let timer = null

input1.addeventlistener('keyup',function ()

timer = settimeout(() => , 500)

})

封裝防抖函式

// 封裝防抖函式

function debounce(fn, delay = 500)

timer = settimeout(() => , delay)

}}input1.addeventlistener('keyup', debounce(function () , 500))

手寫節流(throttle)
const div1 = document.getelementbyid('div1')

let timer = null

div1.addeventlistener('drag', function (e)

timer = settimeout(() => , 100)

})

封裝節流函式

function throttle(fn, delay = 100) 

timer = settimeout(() => , delay)

}}div1.addeventlistener('drag', throttle(function (e) , 100))

安全

問題:常見的web前端攻擊方式有哪些?

xss 攻擊

xss 預防

xsrf 攻擊

xsrf攻擊預防

第十六章 tcp wrappers

在伺服器向外提供的tcp服務上包裝一層安全檢測機制。外來連線請求首先通過這個安全檢測,獲得安全認證後才可被系統服務接受。hosts.allow hosts.deny 在配置檔案中為各服務分別定義訪問控制規則實現訪問控制,檔案中的規則是即時生效的。配置檔案語法 1 daemon list client...

第十六章 執行緒棧

1 基礎 1 執行緒初始化時,執行緒棧預設1m,所有頁面都是page readwrite屬性,但只為前兩個頁面調撥了物理儲存器,位址低的那個頁面叫防護頁面,為其指定了page guard屬性 2 當執行緒訪問到防護頁面時,由於指定了page guard屬性,系統會得到通知,系統會為防護頁面的下乙個頁...

第十六章 控制迴圈

第十六章 控制迴圈 16.1 選擇迴圈的種類 1.在大多數語言中,你只能用到少數幾種迴圈 1 計數迴圈 執行次數一定。2 連續求值的迴圈 預先並不知道將要執行多少次,它會在每次迭代時檢查是否應該結束。3 無限迴圈 一旦啟動就一直執行下去。4 迭代器迴圈 對容器類裡面的每個元素執行一次操作。2.什麼時...