前端性能和安全比較重要,也經(jīng)常會(huì)被提及。
個(gè)人理解的一些:
性能
文件合并
文件壓縮
雪碧圖
gzip [一般后臺(tái) nginx或者Apache上配置,感覺前端也談不上]
動(dòng)態(tài)加載
cdn (一般 運(yùn)維那邊有專人處理,前端談不上)
安全
sql注入 [跨站攻擊]
問(wèn)題:
有經(jīng)驗(yàn)的分享總結(jié)一下唄。謝謝!
性能:
原則1:減少http請(qǐng)求,合并圖片,css文件
原則2:緩存利用:使用CDN,使用外部js和css,添加Exp。ires頭,減少DNS查詢,配置Etag,使用Ajax緩存。
原則3:請(qǐng)求帶寬:開啟GZIP,精簡(jiǎn)js,移除重復(fù)腳本,圖像優(yōu)化。
原則4:頁(yè)面結(jié)構(gòu):樣式放在頭部,及js放在底部,盡早刷新文檔輸出
原則5.避免css表達(dá)式,避免重定向
其實(shí)從特定的業(yè)務(wù)場(chǎng)景出發(fā),會(huì)理解的更深一點(diǎn),比如說(shuō),搜索結(jié)果頁(yè)
安全:
XSS
減少http請(qǐng)求的主要主要思想就是減少HTML文檔內(nèi)鏈接的資源數(shù)量:
項(xiàng)目上線時(shí)將CSS
`JavaScript`等文件壓縮合并打包,減少源文件的數(shù)量和體積
將多張小圖片制作成精靈圖
將資源轉(zhuǎn)換為base64
編碼
使用緩存可以加快網(wǎng)頁(yè)打開速度,有效減少http請(qǐng)求
使用懶加載,按需加載對(duì)應(yīng)資源
使用CDN加載資源
將CSS放在頁(yè)面頭部,防止頁(yè)面閃爍
將JavaScript異步或延遲加載,防止JavaScript運(yùn)行阻塞頁(yè)面加載
延遲請(qǐng)求首屏外的文件,即優(yōu)先加載首屏內(nèi)容。
選擇器從右向左解析,嵌套順序不宜過(guò)深
JavaScript中減少作用域鏈的查找,避免使用eval
和Function
等性能緩慢的接口
DOM操作的代價(jià)是十分昂貴的,可以使用DocumentFragment
暫時(shí)存放那些一次插入文檔的節(jié)點(diǎn)
前端安全主要表現(xiàn)為通過(guò)瀏覽器間接影響到用戶數(shù)據(jù)的安全問(wèn)題。
跨站腳本攻擊(Cross Site Scripting)指的是惡意攻擊者往Web頁(yè)面里插入惡意Script代碼,當(dāng)用戶瀏覽該頁(yè)時(shí),嵌入其中Web里面的Script代碼會(huì)被執(zhí)行,從而達(dá)到惡意攻擊用戶的目的,比如盜取用戶的cookie。
XSS的問(wèn)題是找到目標(biāo)網(wǎng)站可插入執(zhí)行腳本的漏洞,比如某段編輯內(nèi)容,如果不處理用戶的輸入就直接存儲(chǔ)到數(shù)據(jù)庫(kù)中,則用戶訪問(wèn)對(duì)頁(yè)面時(shí),惡意腳本被渲染到頁(yè)面上,就可能執(zhí)行對(duì)應(yīng)的攻擊。
跨站請(qǐng)求偽造,比如目標(biāo)網(wǎng)站的刪除文章功能接受到來(lái)自惡意網(wǎng)站客戶端發(fā)出的刪除文章請(qǐng)求,這個(gè)請(qǐng)求是跨站點(diǎn)的,并且是偽造的(不是目標(biāo)網(wǎng)站用戶的本意)。
實(shí)現(xiàn)方式是在惡意網(wǎng)站上先構(gòu)建一個(gè)GET請(qǐng)求(由于Ajax的同源限制,可以使用img的src請(qǐng)求等),然后欺騙目標(biāo)網(wǎng)站用戶訪問(wèn)該惡意網(wǎng)站,則在訪問(wèn)時(shí)會(huì)發(fā)起對(duì)應(yīng)請(qǐng)求(并附帶對(duì)應(yīng)的Cookie等用戶識(shí)別信息),此時(shí)攻擊也會(huì)發(fā)生
界面?zhèn)卧?,盜取用戶信息啥的...
性能 代碼壓縮 圖片壓縮 減少http請(qǐng)求 ajax異步等等 都有利于性能
安全 XXS 加密代碼