本篇内容介绍了“如何掌握性能优化、Web安全、Linux常用命令”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1.性能优化
1.1 原则
1.2 让加载更快
1.3 让渲染更快
1.4 缓存
1.5 SSR
1.6 懒加载
1.7 防抖及其封装
「防抖」
「应用场景」(帮助你更好理解防抖)
①登录、发短信等按钮避免用户点击太快,以至于发送了多次请求,需要防抖
②调整浏览器窗口大小时,resize次数过于频繁,造成计算过多,此时需要一次到位
③文本编辑器实时保存,当无任何更改操作1秒后进行保存
④用户输入结束或暂停时,才会触发change事件,类似搜索框中输入信息停下来1秒后才会出现可能要搜索的内容
「手写防抖封装」
function debounce ( fn , delay = 500 ) { let timer = null // timer在闭包中,不对外暴露,以免不小心获取进行修改造成错误 return function () { if( timer ){ clearTimeout( timer ) } // 清空定时器 timer = setTimeout( () => { fn.apply( this , arguments ) timer = null } , delay ) } }
1.8 节流及其封装
「节流」
「应用场景」(帮助你更好理解防抖)
「手写节流封装」
function throttle ( fn , delay = 100 ) { let timer = null return function (){ if( timer ){ return } timer = setTimeout( () => { fn.apply( this , arguments ) // 这里不能用fn(),会报错,无法获得事件源对象event timer = null } , delay ) // delay设置的时间内重复执行的定时任务会被清空 } }
1.9 为什么防抖的是clearTimeout(timer),而节流的是return?
防抖是触发间隔大于time触发,所以每次在小于间隔time要清除上个定时器,而节流是不管time内触发多少次,只会每隔time时间触发一次,所以用return
假设time=100ms,一个人每50ms输入一个字符,连续10次,即500ms后防抖只会触发一次,而节流会触发5次。为什么呢?因为防抖的意思即输入完停止100ms后触发事件,而节流是控制100ms触发一次事件,所以防抖触发一次,节流会触发五次。(结合「体会防抖重在清零,节流重在加锁」这两句话)
2.Web安全
2.1 XSS攻击
「XSS跨站请求攻击」
以下都是可能发生的XSS注入攻击
在 HTML 中内嵌的文本中,恶意内容以 script 标签形成注入
在内联的 JavaScript中,拼接的数据突破了原本的限制(字符串,变量,方法名等)
在标签属性中,恶意内容包含引号,从而突破属性值的限制,注入其他属性或者标签
在标签的 href、src 等属性中,包含 javascript: 等可执行代码
在 onload、onerror、onclick 等事件中,注入不受控制代码
在 style 属性和标签中,包含类似 background-image:url("javascript:..."); 的代码(新版本浏览器已经可以防范)
在 style 属性和标签中,包含类似 expression(...) 的 CSS 表达式代码(新版本浏览器已经可以防范)
「XSS攻击场景」
一个博客网站,我发表一篇博客,其中嵌入<script>脚本,脚本内容:获取cookie,发送到我的服务器(服务器配合跨域)阅读了的人的cookie就会被盗取
「XSS预防」
2.2 XSRF攻击
「XSRF跨站请求伪装」
「XSRF攻击场景」
「XSRF预防」
使用post接口
增加验证,例如密码、短信验证码、指纹等
3.描述从输入url到渲染出页面的整个过程
「加载过程」
①DNS解析:域名 -> IP地址
②浏览器根据IP地址向服务器发起Http请求
③服务器处理Http请求,并返回给浏览器
「渲染过程」
4.Linux常用命令
「文件及文件夹操作」
ls xxx 查看文件夹(平铺展开)
ls -a (all的意思,包括以.开头的隐藏文件)
ll 查看文件夹(列表)
ll xxx (查看xxx文件夹下的文件)
mkdir xxx (创建xxx文件夹)
rm -rf xxx (把xxx及其所有子文件全部删除)
cd xxx (进入xxx目录)
mv abc xxx (把abc文件重命名为xxx文件)
mv xxx sss路径 (把xxx文件移到sss路径目录)
cp a.js a1.js (拷贝、复制a.js为a1.js)rm a1.js (直接删除单个文件)
touch d.js (新建文件d.js)
vi d.js (新建或进入一个文件d.js并且进入编辑)
cat xxx (查看xxx文件所有内容但不进入)
head xxx (查看xxx文件前面几行也不进入)
grep "babel" xxx (在xxx文件里查找babel内容)
「Vim编辑器操作」
按 i 开始编辑
Esc 可退出编辑模式
:w 保存写入:q 退出
:wq (保存后退出)
:q! (强制退出,不保存)
“如何掌握性能优化、Web安全、Linux常用命令”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注天达云网站,小编将为大家输出更多高质量的实用文章!