网站页面优化

提升页面性能的方法有哪些?资源压缩合并,减少HTTP请求非核心代码异步加载使用浏览器缓存使用CDN预解析DNSHTML优化,如使用语义化标签,避免重定向等CSS优化,如布局代码写前面,根据需求加载的网络字体,避免使用表达式异步加载的方式有哪些?动态脚本加载deferasyncdefer、async的区别是什么?defer是在HTML解析后才会执行的,如果有多个,按加载顺序依次执行async是在加载完之后立即执行,如果是多个,执行顺序与加载顺序无关缓存的分类有哪些?(跟缓存相关的HTTP头部有哪些?)强缓存特点:不请求,直接使用缓存相关的HTTP头部字段:Expires:过期时间,是个绝对时间,下发的是服务器时间,比较用的是客户端的时间,所以会有偏差Cache-Control:过期时间,是个相对时间,优先级高,以客户端的相对时间为准,浏览器拿到资源之后的多少时间内都不会再去服务器请求协商缓存特点:浏览器不确定备份是否过期,需与服务器请求确认相关的HTTP头部字段:Last-Modified/If-Modified-Since:服务器下发时间,客户端请求时带上下发时间,服务器判断文件...

前端知识库

事件流事件流分为两种,捕获事件流和冒泡事件流捕获事件流从根节点开始执行,一直往子节点查找执行,直到查找执行到目标节点。冒泡事件流从目标节点开始执行,一直往父节点冒泡查找执行,直到查到根节点。事件流分为3个阶段,一个是捕获节点,一个是处于目标节点阶段,一个是冒泡阶段thisthis,函数执行的上下文,可以通过apply,call,bing改变this的指向。对于匿名函数或者直接调用的函数来说,this指向全局上下文(浏览器指向window,node.js为global)剩下的函数调用,那就是谁调用它,this就指向谁。当然还有es6的箭头函数,箭头函数的指向取决于该箭头函数声明的位置,在哪里声明,this就指向哪里。排序冒泡排序:双层遍历,对比前后两个节点,如果满足条件,位置互换,直到遍历结束。快速遍历:去数组中间的那一个数,然后遍历所有数,小于该数的push到一个数组,大于该数push带另一个数组,然后递归去排序这两个数组,最后将所有结果连接起来。选择排序:声明一个数组,每次去输入数组里面找最大值或者最小值,取出来后push到声明的数组中,直到输入数组为空。闭包一句话概括:闭包就...