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