当前位置: 首页 > news >正文

前端性能优化面试题汇总

面试题 1. 简述如何对网站的文件和资源进行优化?

参考回答:

举列:
1.文件合并(目的是减少http请求):使用css sprites合并图片,一个网站经常使用小图标和小图片进行美化,但是很遗憾这些小图片占用了大量的HTTP请求,因此可以采用sprites的方式把所有的图片合并成一张图片 ,可以通过相关工具在线合并,也可以在ps中合并。
2.使用CDN(内容分发网络)加速,降低通信距离。
3.缓存的使用,添加Expire/Cache-Control头。
4.启用Gzip压缩文件
5.将css放在页面最上面。
6.将script放在页面最下面。
7.避免在css中使用表达式。
8.将css, js都放在外部文件中。
9.减少DNS查询。
10.文件压缩:最小化css, js,减小文件体积。
11.避免重定向。
12.移除重复脚本。
13.配置实体标签ETag。14.使用AJAX缓存,让网站内容分批加载,局部更新。
面试题 2. 哪些常见的前端Web性能优化的方法?

参考回答:

前端Web性能优化建议以下操作措施:
(1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。
(2)前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数
(3) 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。
(4) 当需要设置的样式很多时设置className而不是直接操作style。
(5) 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。
(6) 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。
(7) 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。
(8) 避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示div+css布局慢。对普通的网站有一个统一的思路,就是尽量向前端优化、减少数据库操作、减少磁盘IO。向前端优化指的是,在不影响功能和体验的情况下,能在浏览器执行的不要在服务端执行,能在缓存服务器上直接返回的不要到应用服务器,程序能直接取得的结果不要到外部取得,本机内能取得的数据不要到远程取,内存能取到的不要到磁盘取,缓存中有的不要去数据库查询。减少数据库操作指减少更新次数、缓存结果减少查询次数、将数据库执行的操作尽可能的让你的程序完成(例如join查询),减少磁盘IO指尽量不使用文件系统作为缓存、减少读写文件次数等。程序优化永远要优化慢的部分,换语言是无法“优化”的。
面试题 3. 哪些常见操作会前端造成内存泄漏?

参考回答:

1:内存泄漏: 即为变量内容持续占用内存空间,不释放,垃圾回收机制也没有将该内存回收的情况
2:内容泄露的原因:
(1)死循环
(2)定时器没有清除
(3)绑定的事件没有解除
(4)递归调用没有结束条件3:主要存在内存泄漏的问题点: :
(1)BOM DOM对象泄漏
(2)scipt中存在对BOM DOM对象的引用
(3)javaScript对象泄漏
(4)闭包函数导致的泄漏 主要关注的代码点
DOM中的addEventLisner 函数及派生的事件监听, 比如Jquery 中的on 函数, vue 组件实例的 $on 函数,第三方库中的初始化函数
BOM对象的事件监听,比如webSocket的监听事件避免不必要的函数引用如果是要render函数,避免在html标签中DOM BOM事件
面试题 4. 简述前端性能优化问题?

参考回答:

代码层面:避免使用css表达式,避免使用高级选择器,通配选择器。
缓存利用:缓存Ajax,使用CDN,使用外部js和css文件以便缓存,添加Expires头,服务端配置Etag,减少DNS查找等
请求数量:合并样式和脚本,使用css图片精灵,初始首屏之外的图片资源按需加载,静态资源延迟加载。
请求带宽:压缩文件,开启GZIP
面试题 5. 简述三种减少页面加载时间的方法?

参考回答:

1.优化图片
2.图像格式的选择(GIF:提供的颜色较少,可用在一些对颜色要求不高的地方)
3.优化CSS(压缩合并css,如margin-top,margin-left...)
4.网址后加斜杠(如www.campr.com/目录,会判断这个“目录是什么文件类型,或者是目录。)
5.标明高度和宽度(如果浏览器没有找到这两个参数,它需要一边下载图片一边计算大小,如果图片很多,浏览器需要不断地调整页面。这不但影响速度,也影响浏览体验。当浏览器知道了高度和宽度参数后,即使图片暂时无法显示,页面上也会腾出图片的空位,然后继续加载后面的内容。从而加载时间快了,浏览体验也更好了。)
6.减少http请求(合并文件,合并图片)。
面试题 6. 哪些工具来测试代码的性能?

参考回答:

Profiler
JSPerf
Dromaeo
面试题 7. 请指出浏览器特性检测,特性推断和浏览器UA字符串嗅探的区别?

参考回答:

特性检测:为特定浏览器的特性进行测试,并仅当特性存在时即可应用特性。User-Agent检测:最早的浏览器嗅探即用户代理检测,服务端(以及后来的客户端)根据UA字符串屏蔽某些特定的浏览器查看网站内容。特性推断:尝试使用多个特性但仅验证了其中之一。根据一个特性的存在推断另一个特性是否存在。问题是,推断是假设并非事实,而且可能导致可维护性的问题。
面试题 8. 如何进行响应式测试?

参考回答:

响应式测试特别简单,通过改变视窗大小(也就是缩放浏览器)即可测试。当然,当在CSS中设置 Media Queries判断条件时要使用max- width才行,如果使用max- device- width则会根据设备的屏幕尺寸来判断。
面试题 9. 简述对于前端系统重构的理解 ?

参考回答:

网站重构是指在不改变外部行为的前提下,简化结构、添加可读性,且在网站前端保持一致的行为。也就是说,在不改变UI的情况下,对网站进行优化,在扩展的同时保持一致的UI。
对于传统的网站来说,重构通常包括以下方面。
把表格( table)布局改为DV+CSS。
使网站前端兼容现代浏览器。
对移动平台进行优化。
针对搜索引擎进行优化。
深层次的网站重构应该考虑以下方面。
减少代码间的耦合
让代码保持弹性。
严格按规范编写代码。
设计可扩展的API。
代替旧的框架、语言(如VB)
增强用户体验。
对速度进行优化。
压缩 JavaScript、CSS、 image等前端资源(通常由服务器来解决)。
优化程序的性能(如数据读写)。
采用CDN来加速资源加载。
优化 JavaScript DOM。
缓存HTTP服务器的文件。
面试题 10. 简述移动端性能如何优化?

参考回答:

优化方式如下。
尽量使用CSS3动画,开启硬件加速。
适当使用 touch事件代替 click事件。
避免使用CSS3渐变阴影效果。
可以用 transform:translateZ(0)来开启硬件加速。
不滥用 Float, Float在渲染时计算量比较大,尽量少使用。
不滥用Web字体,Web字体需要下载、解析、重绘当前页面,尽量少使用。
合理使用requestAnimation Frame动画代替 setTimeout。
合理使用CSS中的属性(CSS3 transitions、CSS3 3D transforms、 Opacity、 Canvas、 WebGL、Video)触发GPU渲染。过度使用会使手机耗电量増加。
面试题 11. 请说出几种缩短页面加载时间的方法?

参考回答:

具体方法如下。
(1)优化图片
(2)选择图像存储格式(比如,GIF提供的颜色较少,可用在一些对颜色要求不高的地方)
(3)优化CSS(压缩、合并CSS)
(4)在网址后加斜杠
(5)为图片标明高度和宽度(如果浏览器没有找到这两个参数,它需要一边下载图片一边计算大小。如果图片很多,浏览器需要不断地调整页面。这不但影响速度,而且影响浏览体验。当浏览器知道高度和宽度参数后,即使图片暂时无法显示,页面上也会腾出图片的空位,然后继续加载后面的内容,从而优化加载时间,提升浏览体验)
面试题 12. 简述哪些方法可以提升网站前端性能?

参考回答:

一、HTTP请求优化。主要分为减少HTTP请求次数、减小请求数据量和缓存三个方面。减少HTTP请求次数可以通过以下方法实现:合并JS、CSS文件;使用CSS Sprites技术合并图片;压缩图片大小;避免使用多个域名。
减小请求的数据量来降低网络带宽消耗,提高页面加载速度。实现方式包括:压缩JavaScript、CSS文件;使用Gzip压缩响应数据;精简HTML代码。
在浏览器缓存中缓存静态资源则可以大大减少HTTP请求次数,提高页面加载速度。可以通过设置Expires头信息;设置Cache-Control头信息;使用ETag头信息等方式来实现强缓存或协商缓存,具体根据网站优化需求去使用即可。二、资源加载优化。主要分为异步加载JS文件、延迟加载图片、使用CDN三种方法。异步加载JavaScript文件,即采用诸如async、defer等方式将JS文件异步加载,避免JavaScript阻塞页面渲染的情况,提高页面加载速度。
延迟加载图片。避免在页面加载时同时请求大量图片,降低网络带宽消耗,提高页面加载速度,期间可以采用骨架屏等方式来提高用户体验。
使用CDN加速。即利用CDN将资源分发到离用户更近的服务器上,提高资源加载速度。三、页面渲染优化。主要包括减少DOM操作次数、避免table布局、采用CSS动画等。减少DOM操作次数。可以减轻浏览器的负担,提高页面渲染速度,主要通过缓存DOM元素和一次性对DOM元素进行修改来实现。
避免使用table布局,table布局牵一发而动全身,修改一个小标签会使得页面渲染速度变慢,建议使用div+CSS布局或者flex布局。
使用CSS动画代替JavaScript动画。CSS动画可以减少JS操作DOM的次数,提高页面渲染速度。四、代码优化。主要分为避免使用全局变量、优化重复执行代码两个方面。
避免使用全局变量。过多的全局变量会占用过多的内存空间,影响页面性能,为此我们使用命名空间避免全局变量污染或者将全局变量封装在闭包中。
将重复执行的代码进行优化。将重复执行的代码进行优化可以减少代码运行时间,提高页面渲染速度,通过缓存DOM元素、事件委托等形式都可以实现。综上,前端性能优化是提高用户体验的重要手段。本文从HTTP请求优化、资源加载优化、页面渲染优化和代码优化四个方面介绍了常见的前端性能优化方法。在日常学习工作中,我们应该根据具体的项目需求选择合适的优化手段,从而提高页面加载速度和渲染速度。
面试题 13. 简述列举你知道的Web性能优化方法 ?

参考回答:

具体优化方法如下。
(1)压缩源码和图片( JavaScript采用混淆压缩,CSS进行普通压缩,JPG图片根据具体质量压缩为50%~70%,把PNG图片从24色压缩成8色以去掉一些PNG格式信息等)。
(2)选择合适的图片格式(颜色数多用JPG格式,而很少使用PNG格式,如果能通过服务器端判断浏览器支持WebP就用WebP或SVG格式)。
(3)合并静态资源(减少HTTP请求)
(4)把多个CSS合并为一个CSS,把图片组合成雪碧图。
(5)开启服务器端的Gzip压缩(对文本资源非常有效)。
(6)使用CDN(对公开库共享缓存)。
(7)延长静态资源缓存时间。
(8)把CSS放在页面头部把 JavaScript代码放在页面底部(这样避免阻塞页面渲染而使页面出现长时间的空白)
面试题 14. 简述如何分析并对代码进行性能优化 ?

参考回答:

利用性能分析工具监测性能,包括静态 Analyze工具和运行时的 Profile工具(在Xcode工具栏中依次单击 Product→ Profile项可以启动)。比如测试程序的运行时间,当单击 Time Profiler项时,应用程序开始运行,这就能获取到运行整个应用程序所消耗时间的分布和百分比。为了保证数据分析在同一使用场景下的真实性,一定要使用真机,因为此时模拟器在Mac上运行,而Mac上的CPU往往比iOS设备要快
面试题 15. 简述CSS,如何优化性能?

参考回答:

(1)正确使用 display属性, display属性会影响页面的渲染,因此要注意以下几方面。
display:inline后不应该再使用 width、 height、 margin、 padding和float 。
display:inline- block后不应该再使用 float。
display:block后不应该再使用 vertical-align。
display:table-*后不应该再使用 margin或者float。
(2)不滥用 float。
(3)不声明过多的font-size。
(4)当值为0时不需要单位。
(5)标准化各种浏览器前缀,并注意以下几方面。
浏览器无前缀应放在最后。
CSS动画只用( -webkit-无前缀)两种即可。
其他前缀包括 -webkit-、-moz-、-ms-、无前缀( Opera浏览器改用 blink内核,所以-0-被淘汰)
(6)避免让选择符看起来像是正则表达式。高级选择器不容易读懂,执行时间也长。
(7)尽量使用id、 class选择器设置样式(避免使用 style属性设置行内样式)
(8)尽量使用CSS3动画。
(9)减少重绘和回流。
面试题 16. 针对HTML,如何优化性能?

参考回答:

(1)对于资源加载,按需加载和异步加载
(2)首次加载的资源不超过1024KB,即越小越好。
(3)压缩HTML、CSS、 JavaScript文件。
(4)减少DOM节点。
(5)避免空src(空src在部分浏览器中会导致无效请求)。
(6)避免30*、40*、50*请求错误
(7)添加 Favicon.ico,如果没有设置图标ico,则默认的图标会导致发送一个404或者500请求。
面试题 17. 简述JavaScript,如何优化性能?

参考回答:

(1)缓存DOM的选择和计算。
(2)尽量使用事件委托模式,避免批量绑定事件。
(3)使用 touchstart、 touchend代替 click。
(4)合理使用 requestAnimationFrame动画代替 setTimeOut。
(5)适当使用 canvas动画。
(6)尽量避免在高频事件(如 TouchMove、 Scroll事件)中修改视图,这会导致多次渲染。
面试题 18. 简述如何优化服务器端的接口(通讯链接方面) ?

参考回答:

(1)接口合并:如果一个页面需要请求两部分以上的数据接口,则建议合并成一个以减少HTTP请求数
(2)减少数据量:去掉接口返回的数据中不需要的数据
(3)缓存数据:首次加载请求后,缓存数据;对于非首次请求,优先使用上次请求的数据,这样可以提升非首次请求的响应速度。
面试题 19. 简述前端如何优化脚本的执行?

参考回答:

脚本处理不当会阻塞页面加载、渲染,因此在使用时需注意。
(1)把CSS写在页面头部,把 JavaScript程序写在页面尾部或异步操作中。
(2)避免图片和 iFrame等的空src,空src会重新加载当前页面,影响速度和效率。
(3)尽量避免重设图片大小。重设图片大小是指在页面、CSS、 JavaScript文件等中多次重置图片大小,多次重设图片大小会引发图片的多次重绘,影响性能
(4)图片尽量避免使用 DataURL。DataURL图片没有使用图片的压缩算法,文件会变大,并且要在解码后再渲染,加载慢,耗时长
面试题 20. 简述前端如何优化渲染?

参考回答:

具体方法如下。
通过HTML设置 Viewport元标签, Viewport可以加速页面的渲染,如以下代码所示。(2)减少DOM节点数量,DOM节点太多会影响页面的渲染,应尽量减少DOM节点数量。
(3)尽量使用CSS3动画,合理使用 requestAnimationFrame动画代替 setTimeout,适当使用 canvas动画(5个元素以内使用CSS动画,5个元素以上使用 canvas动画(iOS 8中可使用 webGL))。
(4)对于高频事件优化 Touchmove, Scroll事件可导致多次渲染。
使用 requestAnimationFrame监听帧变化,以便在正确的时间进行渲染,增加响应变化的时间间隔,减少重绘次数。
使用节流模式(基于操作节流,或者基于时间节流),减少触发次数。
(5)提升GPU的速度,用CSS中的属性(CSS3 transitions、CSS3 3D transforms、 Opacity、 Canvas、 WebGL、Video)来触发GPU渲染.
面试题 21. 简述如何合理设置DNS缓存?

参考回答:

在浏览器地址栏中输入URL以后,浏览器首先要查询域名( hostname)对应服务器的IP地址,一般需要耗费20~120ms的时间。
DNS查询完成之前,浏览器无法识别服务器IP,因此不下载任何数据。基于性能考虑,ISP运营商、局域网路由、操作系统、客户端(浏览器)均会有相应的DNS缓存机制。
(1)正IE缓存30min,可以通过注册表中 DnsCacheTimeout项设置。
(2) Firefox混存1 min,通过 network.dnsCacheExpiration配置。
(3)在 Chrome中通过依次单击“设置”→“选项”→“高级选项”,并勾选“用预提取DNS提高网页载入速度”选项来配置缓存时间。
面试题 22. 简述jQuery性能优化如何做?

参考回答:

(1)使用最新版本的 jQuery类库。
JQuery类库每一个新的版本都会对上一个版本进行Bug修复和一些优化,同时也会包含一些创新,所以建议使用最新版本的 jQuery类库提高性能。不过需要注意的是,在更换版本之后,不要忘记测试代码,毕竟有时候不是完全向后兼容的。
(2)使用合适的选择器。
jQuery提供非常丰富的选择器,选择器是开发人员最常使用的功能,但是使用不同选择器也会带来性能问题。建议使用简凖选择器,如i选择器、类选择器,不要将i选择器嵌套等。
(3)以数组方式使用 jQuery对象。
使用 jQuery选择器获取的结果是一个 jQuery对象。然而, jQuery类库会让你感觉正在使用一个定义了索引和长度的数组。在性能方面,建议使用简单的for或者 while循环来处理,而不是$. each(),这样能使代码更快。
(4)每一个 JavaScript事件(例如 click、 mouseover等)都会冒泡到父级节点。当需要给多个元素绑定相同的回调函数时,建议使用事件委托模式。
(5)使用join( )来拼接字符串。
使用 join( )拼接长字符串,而不要使用“+”拼接字符串,这有助于性能优化,特别是处理长字符串的时候。
(6)合理利用HTML5中的data属性。
HTML5中的data属性有助于插入数据,特别是前、后端的数据交换;jQuery的 data( )方法能够有效地利用HTML5的属性来自动获取数据。
面试题 23. 哪些方法能提升移动端CSS3动画体验?

参考回答:

(1)尽可能多地利用硬件能力,如使用3D变形来开启GPU加速,例如以下代码。-webkit-transform: translate 3d(0, 0, 0);
-moz-transform : translate3d(0,0, 0);
-ms-transform : translate 3d(0,0,0);
transform: translate3d(0,0,0);
一个元素通过 translate3d右移500X的动画流畅度会明显优于使用left属性实现的动画移动,原因是CSS动画属性会触发整个页面重排、重绘、重组。paint通常是最耗性能的,尽可能避免使用触发 paint的CSS动画属性。如果动画执行过程中有闪烁(通常发生在动画开始的时候),可以通过如下方式处理。-webkit-backface-visibility:hidden;
-moz-backface-visibility:hidden;
-ms-backface-visibility:hidden ;
backface-visibility:hidden;
-webkit-perspective:1000;
-moz-perspective:1000;
-ms-perspective:1000;
perspective:1000;
(2)尽可能少使用box- shadows和 gradients,它们往往严重影响页面的性能,尤其是在一个元素中同时都使用时。(3)尽可能让动画元素脱离文档流,以减少重排,如以下代码所示。position:fixed;
position:absolute;
面试题 24. 简述浏览器缓存机制 ?

参考回答:

浏览器缓存是比较常见的问题,我会从浏览器缓存的方式,缓存的实现, 缓存在哪里这几个点来说明
缓存方式
我们经常说的浏览器缓存有两种,一种是强制缓存,一种是协商缓存,因为下面有具体实现讲解,所以这里就说一下概念
协商缓存协商缓存意思是文件已经被缓存了,但是否从缓存中读取是需要和服务器进行协商,具体如何协商要看请求头/响应头的字段设置,下面会说到。需要注意的是协商缓存还是发了请求的
强制缓存强制缓存就是文件直接从缓存中获取,不需要发送请求
缓存实现
强制缓存
强制缓存在 http1.0 的时候用的是 Expires,是响应头里面的一个字段表示的是文件过期时间。是一个绝对时间,正因为是绝对时间所以在某些情况下,服务器的时区和浏览器时区不一致的时候就会导致缓存失效。为了解决这个问题,HTPP1.1 引入了一个新的响应头 cache-control 它的可选值如下
cache-control
max-age: 缓存过期时间,是一个相对时间
public: 表示客户端和代理服务器都会缓存
private: 表示只在客户端缓存
no-cache: 协商缓存标识符,表示文件会被缓存但是需要和服务器协商
no-store: 表示文件不会被缓存
HTTP1.1 利用的就是 max-age:600 来强制缓存,因为是相对时间,所以不会出现 Expires 问题
协商缓存协商缓存是利用 Last-Modified/if-Modified-Since,Etag/if-None-Match 这两对请求、响应头。Last-Modified/if-Modified-SinceEtag/If-None-Match由于 Last-Modified 的时间粒度是秒,有的文件在 1s 内可能被改动多次。这种方式在这种特殊情况下还是会失效,所以HTTP1.1又引入了 Etag 字段。这个字段是根据文件内容生成一个标记符比如"W/"5f9583bd-10a8"",然后再和 If-None-Match 进行对比就能更准确的知道文件有没有被改动过
浏览器第一次发送请求获取文件缓存下来,服务器响应头返回一个 if-Modified-Since,记录被改动的时间
浏览器第二次发送请求的时候会带上一个 Last-Modified 请求头,时间就是 if-Modified-Since 返回的值。然后服务器拿到这个字段和自己内部设置的时间进行对比,时间相同表示没有修改,就直接返回 304 从缓存里面获取文件
缓存在哪里
知道了缓存方式和实现,再来说一下缓存存在哪个地方,我们打开掘金可以看到如下的信息 。缓存的来源有两个地方 from dist cache,from memeory cache
form memory cache
这个是缓存在内存里面,优点是快速,但是具有时效性,当关闭 tab 时候缓存就会失效。
from dist cache
这个是缓存在磁盘里面,虽然慢但是还是比请求快,优点是缓存可以一直被保留,即使关闭 tab 页,也会一直存在
何时缓存在memory,合适缓存在dist?
这个问题网上很少找的到标准答案,大家一致的说法是js,图片文件浏览器会自动保存在memory中,css文件因为不常修改保存在dist里面,我们可以打开掘金网站,很大一部分文件都是按照这个规则来的,但是也有少数js文件也是缓存在dist里面。所以他的存放机制到底是什么样了?我带着这个疑问查了好多文章,虽然最后没有确切找到答案,但是一个知乎的回答可以给我们提供思路,下面引用一个知乎回答者一段话
第一个现象(以图片为例):访问-> 200 -> 退出浏览器再进来-> 200(from disk cache) -> 刷新 -> 200(from memory cache)。总结: 会不会是chrome很聪明的判断既然已经从disk拿来了, 第二次就内存拿吧 快。(笑哭)
第二个现象(以图片为例):只要图片是base64 我看都是from memroy cache。总结: 解析渲染图片这么费劲的事情,还是做一次然后放到内存吧。用的时候直接拿
第三个现象(以js css为例):个人在做静态测试的发现,大型的js css文件都是直接disk cache。结: chrome会不会说 我去 你这么大太占地方了。你就去硬盘里呆着吧。慢就慢点吧。
第四个现象:隐私模式下,几乎都是 from memroy cache。总结: 隐私模式 是吧。我不能暴露你东西,还是放到内存吧。你关,我死。
上面几点是虽然很幽默,但是却可以从中找到一部分答案,但是我觉得另一个知乎回答我更赞同
浏览器运行的时候也是由几个进程协作的,所以操作系统为了节省内存,会把一部分内存里的资源交换回磁盘的交换区,当然交换是有策略的,比如最常用的就是LRU。
什么时候存dist,什么时候存memoey都是在浏览器控制下的,memory不够了可能就会考虑去存dist了,所以经过上面所说我自己总结结果如下
大一点的文件会缓存在dist里面,因为内存也是有限的,磁盘的空间更大
小一点文件js,图片存的是memory
css文件一般存在dist
特殊情况memory大小是有限制的,浏览器也会根据自己的内置算法,把一部分js文件存到dist里面
面试题 25. 简述Weinre调试工具 ?

参考回答:

Weinre是一个简单、好用的调试工具。它会在本地创建一个监听服务器,并提供一个 JavaScript程序,你只用在需要测试的页面中加载这段 JavaScript程序,就可以被Weinre监听到,在 Inspect面板中调试这个页面
面试题 26. 如何对IE浏览器进行网页调试?

参考回答:

可以通过以下工具进行调试。
SuperPreview,主要用于HTML代码、CSS代码的调试和各个浏览器(目前只能针对IE6~IE8)的页面呈现测试。
Internet Explorer Collection,主要用于 Internet Explorer浏览器(IEl~IE8)各个版本的页面呈现测试。
Developer Toolbar,主要用于HTML代码、CSS代码和 JavaScript代码的调试。
IE WebDeveloper,主要用于HTML代码、CSS代码和 JavaScript代码的调试。
IE Web Developer可以让你检查和编辑 HTML DOM,显示错误信息、日志信息,显网站源代码,监视DHTML事件和HTTP流量。它的功能可以和火狐中的Firebug相媲美,甚至有些功能还强于 Firebug。
IETester,主要用于 Internet Explorer浏览器各个版本的页面呈现测试。
VS2008,主要用于 JavaScript代码的调试。
DebugBar,主要用于HTML代码、CSS代码和 JavaScript代码的调试
面试题 27. 简述原生JavaScript脚本优化 ?

参考回答:

1、减少重绘和回流
避免不必要的DOM操作
避免使用document.write
减少drawImage
尽量改变class而不是style,使用classList代替
className
2、缓存DOM选择与计算:每次DOM选择都要计算和缓存
3、缓存.length的值:每次.length计算用一个变量保存值
4、尽量使用事件代理:避免批量绑定事件
5、尽量使用id选择器:id选择器选择元素是最快的
6、touch事件优化:使用tap(touchstart和touchend)代替click(注意touch响应过快,易引发误操作)
面试题 28. 简述如何进行前端渲染优化 ?

参考回答:

1、设置viewport:HTML的viewport可加速页面的渲染2、减少DOM节点:DOM节点太多影响页面的渲染,尽量减少DOM节点。3、优化动画
(1):尽量使用css3动画
(2):合理使用requestAnimationFrame动画代替setTimeout.
(3):适当使用canvas动画:5个元素以内使用css动画,5个元素使用canvas动画,iOS8+可使用WebGL动画。4、优化高频事件:scroll、touchmove等事件可导致多次渲染。
(1):函数节流
(2):函数防抖
(3):使用requestAnimationFrame监听帧变化:使得在正确的时间进行渲染
(4):增加响应变化的时间间隔:减少重绘次数5、GPU加速:使用某些html5标签和css3属性触发GPU渲染,请合理使用(过渡使用会引发手机耗电量增加)。
(1):html标签:video,canvas,webgl
(2):css属性,opacity,transform,transition

相关文章:

前端性能优化面试题汇总

面试题 1. 简述如何对网站的文件和资源进行优化? 参考回答: 举列: 1.文件合并(目的是减少http请求):使用css sprites合并图片,一个网站经常使用小图标和小图片进行美化,但是很遗憾这些小图片…...

C#基于SkiaSharp实现印章管理(4)

前几篇文章实现了绘制不同外形印章的功能,印章内部一般包含圆形、线条等形状,有些印章内部还有五角星,然后就是各种样式的文字。本文实现在印章内部绘制圆形、线条、矩形、椭圆等四种形状。   定义FigureType枚举记录印章内部形状&#xff…...

Vue全家桶 - pinia 的理解和学习2(Pinia 核心概念的插件、组件外的 Store 和 服务器渲染(SSR))

Pinia(Vue 的专属状态管理库) Vue全家桶 - pinia 的理解和学习1(Pinia 核心概念的 Store、State、Getter、Action) https://blog.csdn.net/weixin_54092687/article/details/140520675 插件 由于有了底层 API 的支持&#xff0c…...

数学建模(6)——预测类模型目录

预测模型是一类通过分析和建模历史数据来预测未来结果的算法或模型。这些模型广泛应用于各种领域,包括金融、医疗、市场营销、气象、制造业等。以下是一些常见的预测模型: 1. 回归模型 线性回归(Linear Regression):…...

安卓刷入系统证书

设备:Pixel XL 证书:reqable-ca.crt 刷入前需要手机已刷入Magisk 使用USB充电线连接手机,打开Windows终端面板手机打开Magisk,开启Shell的Root权限Windows终端输入su获取root权限查看SELinux状态并修改为Permissive修改system分…...

中科亿海微信号采集核心板在振动采集场景中的应用

在工业现场控制领域,对于旋转物体的速度我们通用的做法是测量旋转所产生的振动量来倒推设备的转速值。振动采集系统是一种广泛用于检测和记录系统振动的设备,整体包括传感器和数据采集两部分。传感器类型包括加速度传感器、速度传感器和位移传感器&#…...

`panic` 是 Go 语言中用来表示发生了严重错误的一种机制

目录 panic 是 Go 语言中用来表示发生了严重错误的一种机制案例goroutine空指针是什么栈展开是什么defer 语句会按照 LIFO(后进先出)的顺序执行 panic 是 Go 语言中用来表示发生了严重错误的一种机制 在 Go 程序中,panic 是一种运行时错误&a…...

【BUG】已解决:requests.exceptions.ProxyError: HTTPSConnectionPool

已解决:requests.exceptions.ProxyError: HTTPSConnectionPool 目录 已解决:requests.exceptions.ProxyError: HTTPSConnectionPool 【常见模块错误】 原因分析 解决方案 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&am…...

Python实现招聘数据采集 ,并做可视化分析

转眼秋招快到了, 今天来学习一下如何用Python采集全网招聘数据,并进行可视化分析,为就业准备~ 话不多说开始造 源码和详细的视频讲解我都打包好了,文末名片自取 准备工作 首先你需要准备这些 环境 Python 3.10 Pycharm 模块…...

ES中的数据类型学习之Aggregate metric(聚合计算)

Aggregate metric field type | Elasticsearch Guide [7.17] | Elastic 对于object类型的字段来说,可以存子字段为 min/max/sum/value_count PUT my-index {"mappings": {"properties": {"my-agg-metric-field": { -- 字段名"ty…...

看准JS逆向案例:webpack逆向解析

🔍 逆向思路与步骤 抓包分析与参数定位 首先,我们通过抓包工具对看准网的请求进行分析。 发现请求中包含加密的参数b和kiv。 为了分析这些加密参数,我们需要进一步定位JS加密代码的位置。 扣取JS加密代码 定位到JS代码中的加密实现后&a…...

【C语言】 利用栈完成十进制转二进制(分文件编译,堆区申请空间malloc)

利用栈先进后出的特性,在函数内部,进行除二取余的操作,把每次的余数存入栈内,最后输出刚好就是逆序输出,为二进制数 学习过程中,对存储栈进行堆区的内存申请时候,并不是很熟练,一开始…...

如何解决ChromeDriver 126找不到chromedriver.exe问题

引言 在使用Selenium和ChromeDriver进行网页自动化时,ChromeDriver与Chrome浏览器版本不匹配的问题时有发生。最近,许多开发者在使用ChromeDriver 126时遇到了无法找到chromedriver.exe文件的错误。本文将介绍该问题的原因,并提供详细的解决…...

Anaconda下安装配置Jupyter

Anaconda下安装配置Jupyter 1、安装 conda activate my_env #激活虚拟环境 pip install jupyter #安装 jupyter notebook --generate-config #生成配置文件提示配置文件的位置: Writing default config to: /root/.jupyter/jupyter_notebook_config.py检查版本&am…...

蓝队黑名单IP解封提取脚本

应用场景:公司给蓝队人员一个解封IP列表,假如某个IP满足属于某某C段,则对该IP进行解封。该脚本则是进行批量筛选出符合条件的白名单IP 实操如下:公司给了一个已经封禁了的黑名单IP列表如下(black) 公司要求…...

共享充电桩语音ic方案,展现它的“说话”的能力

随着电动汽车的普及,充电设施的便捷性、智能化需求日益凸显,共享充电桩语音IC应运而生,成为连接人与机器、实现智能交互的桥梁。本文将为大家介绍共享充电桩语音ic的概述、应用词条以及优势,希望能够帮助您。 一、NV170D语音ic概述…...

ARM 单片机裸机任务调度框架

前言: 在没有使用操作系统的情况下,一个合理的裸机任务调度方式,可以更好的提供数据的处理,和用户体验,有多种任务调度的方式。 方案 1: 从上到下的任务调度方式,C语言程序的代码是在main函数…...

.Net 8 控制台程序部署(Linux篇)

在无流量Linux环境下部署.NET8开发的控制台程序 写在前面准备远程访问安装环境程序部署1.下载并导入2.解压并配置3.发布程序4.创建Systemd服务单元文件5.启用并启动服务 写在结尾 写在前面 好久没更新文章了,今天给大家带来的是在在无流量的Linux工控机上部署.Net8…...

LeetCode:x的平方根(C语言)

1、问题概述:给你一个非负整数 x,计算并返回 x 的 算术平方根 ,返回类型得是一个整数,小数舍弃 2、示例 示例 1: 输入:x 4 输出:2 示例 2: 输入:x 8 输出:…...

深入浅出WebRTC—DelayBasedBwe

WebRTC 中的带宽估计是其拥塞控制机制的核心组成部分,基于延迟的带宽估计是其中的一种策略,它主要基于延迟变化推断出可用的网络带宽。 1. 总体架构 1.1. 静态结构 1)DelayBasedBwe 受 GoogCcNetworkController 控制,接收其输入…...

JAVA开发工具IDEA如何连接操作数据库

一、下载驱动 下载地址:【免费】mysql-connector-j-8.2.0.jar资源-CSDN文库 二、导入驱动 鼠标右击下载到IDEA中的jar包,选择Add as Library选项 如图就导入成功 三、加载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); 四、驱动管理…...

简化AI模型:PyTorch量化技术在边缘计算中的应用

引言 在资源受限的设备上部署深度学习模型时,模型量化技术可以显著提高模型的部署效率。通过将模型的权重和激活从32位浮点数转换为更低位数的值,量化可以减少模型的大小,加快推理速度,同时降低能耗。 模型量化概述 定义与优势…...

拥抱AI时代:解锁Prompt技术的无限潜力与深远影响

拥抱AI时代:解锁Prompt技术的无限潜力与深远影响 引言 在人工智能的浩瀚星空中,自然语言处理(NLP)无疑是最耀眼的星辰之一。随着技术的不断演进,NLP已经从最初的简单问答系统发展成为能够生成复杂文本、理解人类情感与…...

第123天:内网安全-域防火墙入站出站规则不出网隧道上线组策略对象同步

目录 案例一: 单机-防火墙-限制端口\协议出入站 案例二:不出网的解决思路 入站连接 隧道技术 案例三:域控-防火墙-组策略对象同步 案例四:域控-防火墙-组策略不出网上线 msf cs 案例一: 单机-防火墙-限制端口\…...

博客建站4 - ssh远程连接服务器

1. 什么是SSH?2. 下载shh客户端3. 配置ssh密钥4. 连接服务器5. 常见问题 5.1. IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! 1. 什么是SSH? SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地远程登录到其他…...

MySQL--索引(3)

1.索引创建注意点 选择合适的字段 1.不为 NULL 的字段 索引字段的数据应该尽量不为 NULL,因为对于数据为 NULL 的字段,数据库较难优化。如果字段频繁被查询,但又避免不了为 NULL,建议使用 0,1,true,false 这样语义较为清晰的短值或…...

sql_exporter通过sql收集业务数据并通过prometheus+grafana展示

下载并解压安装sql_exporter wget https://github.com/free/sql_exporter/releases/download/0.5/sql_exporter-0.5.linux-amd64.tar.gz #解压 tar xvf sql_exporter-0.5.linux-amd64.tar.gz -C /usr/local/修改主配置文件 cd /usr/local/ mv sql_exporter-0.5.linux-amd64 s…...

pytorch 笔记:torch.optim.Adam

torch.optim.Adam 是一个实现 Adam 优化算法的类。Adam 是一个常用的梯度下降优化方法,特别适合处理大规模数据集和参数的深度学习模型 torch.optim.Adam(params, lr0.001, betas(0.9, 0.999), eps1e-08, weight_decay0, amsgradFalse, *, foreachNone, maximizeFa…...

开源AI智能名片小程序:深度剖析体验优化策略,激活小程序生命力的运营之道

摘要:在移动互联网的浪潮中,微信小程序凭借其无需下载、即用即走的特性,迅速成为企业连接用户、拓展市场的重要桥梁。开源AI智能名片小程序,作为这一领域的创新尝试,旨在通过融合人工智能技术与传统商务名片的概念&…...

ML.Net 学习之使用经过训练的模型进行预测

什么是ML.Net:(学习文档上摘的一段:ML.NET 文档 - 教程和 API 参考 | Microsoft Learn 【学习入口】) 它使你能够在联机或脱机场景中将机器学习添加到 .NET 应用程序中。 借助此功能,可以使用应用程序的可用数据进行自…...

为什么 centos 下使用 tree 命令看不见 .env 文件

CentOS 下使用 tree 命令看不到 .env 文件主要有两个可能的原因: 默认情况下,tree 命令不显示隐藏文件。在 Linux 系统中,以点(.)开头的文件或目录被视为隐藏文件。.env 文件就属于这种隐藏文件。 您可能没有安装 tree 命令。如果在 CentOS …...

数据库基础与性能概述及相关术语

在计算机科学领域,特别是数据库技术中,掌握与数据库性能相关的专业词汇对于数据库管理员、开发人员及数据分析师等专业人员来说至关重要。以下是一篇关于计算机必背单词——数据库性能相关的详细解析. 一、数据库基础与性能概述 数据库是计算机科学中的…...

docker基于外部缓存加速构建方案

开启外部缓存 http://your_apt_cacher_ng_server:3142 是一个示例 URL,表示需要设置的 apt-cacher-ng 代理服务器的地址。apt-cacher-ng 是一个本地代理服务器,可以缓存从官方 APT 仓库下载的软件包,从而加速后续的下载过程,并减…...

【C语言】 作业11 链表+实现函数封装

递归实现链表数据互换,纯不会,明天再说 1、链表实现以下功能 链表,创建链表,申请节点,判空,头插,遍历输出,通过位置查找节点,任意位置插入,头删,…...

【Ubuntu】Ubuntu20修改MAC地址

文章目录 一、临时修改MAC地址(重启后复原)二、永久修改MAC地址 场景:在做虚拟机复制时,复制完的两台虚拟机存在相同MAC,导致无法分别分配IP。 解决:修改一台虚拟机的MAC地址。 一、临时修改MAC地址&#…...

ClickHouse集成LDAP实现简单的用户认证

1.这里我的ldap安装的是docker版的 docker安装的化就yum就好了 sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo systemctl start docker 使用下面的命令验证sudo docker run hello-world docker pull osixia/openl…...

C语言-预处理详解

1.预处理符号 C语言中设置了一些预定义符号,可以直接使用,预定义符号是在预处理期间处理的。 __FILE__//代表当前进行编译的源文件 __LINE__//文件当前行号 __DATE__//文件当前日期 __TIME__//文件当前时间 __STDC__//如果编译器遵循ANSIC,…...

计算机网络-VLAN间通信(三层通信)模拟实现

目录 VLAN基础知识VLAN和普通LAN区别划分VLAN的原因 实现VLAN间的通信(三层通信)方案一:多臂路由方案二:单臂路由方案三:三层交换机 VLAN基础知识 VLAN(Virtual Local Area Network,虚拟局域网…...

【JAVA】数据类型及变量

🎉欢迎大家收看,请多多支持🌹 🥰关注小哇,和我一起成长🚀个人主页🚀 Java的数据类型 可以分为两类,基本数据类型和引用数据类型 基本数据类型有4类8种,4类分别是整型 浮…...

微软蓝屏事件暴露的网络安全问题

目录 1.概述 2.软件更新流程中的风险管理和质量控制机制 2.1.测试流程 2.2.风险管理策略 2.3.质量控制措施 2.4.小结 3.预防类似大规模故障的最佳方案或应急响应对策 3.1. 设计冗余系统 3.2. 实施灾难恢复计划 3.3. 建立高可用架构 3.4. 类似规模的紧急故障下的响应…...

11 - FFmpeg - 编码 AAC

Planar 模式是 ffmpeg内部存储模式,我们实际使用的音频文件都是Packed模式的。 FFmpeq解码不同格式的音频输出的音频采样格式不是一样。 其中AAC解码输出的数据为浮点型的 AV_SAMPLE_FMT_FLTP 格式,MP3 解码输出的数据为 AV_SAMPLE_FMT_S16P 格式(使用的…...

OS Copilot初体验的感受与心得

本文介绍体验操作系统智能助手OS Copilot后,个人的一些收获、体验等。 最近,抽空体验了阿里云的操作系统智能助手OS Copilot,在这里记录一下心得与收获。总体观之,从个人角度来说,感觉这个OS Copilot确实抓住了不少开发…...

Ajax学习笔记

文章目录标题 Ajax学习笔记axios使用axios请求拦截器axios响应拦截器优化axios响应结果 form-serialize插件图片上传HTTP协议请求报文相应报文接口文档 AJAX原理 - XMLHttpRequest使用XMLHttpRequestXMLHttpRequest - 查询参数查询字符串对象 XMLHttpRequest - 数据提交 事件循…...

医学深度学习与机器学习融合的随想

医学深度学习与机器学习融合的随想 近年来,深度学习(图像类)和机器学习在医学领域的应用取得了飞速发展,为医学影像分析、疾病诊断和预后预测等领域带来了革命性的变革。深度学习擅长从复杂数据中提取高层次特征,而机…...

坑人的macos tar 命令 (实际上是bsdtar)换用 gnu tar

周末 看着笔记本上好用的朗文当代高级词典(mac版)和其它两部词典,准备复制到黑苹果台式机上去。考虑到词典内容有太多小文件,普通复制传输太慢,毫无疑问用 tar 打包肯定快而且能保留原始文件的各种信息。命令如下: time tar czf …...

【SpringBoot3】全局异常处理

【SpringBoot3】全局异常处理 一、全局异常处理器step1:创建收入数字的页面step2:创建控制器,计算两个整数相除step3:创建自定义异常处理器step5:创建给用提示的页面step6:测试输入(10/0) 二、BeanValidato…...

vue-Treeselect

一、Node KeyTypeDescriptionid (required)Number | String用于标识树中的选项。其值在所有选项中必须是唯一的label (required)String用于显示选项childrennode[] | null声明一个分支节点。你可以: 1) 设置为由a组成的子选项数组。叶节点,b…...

【机器学习框架TensorFlow和PyTorch】基本使用指南

机器学习框架TensorFlow和PyTorch:基本使用指南 目录 引言TensorFlow概述 TensorFlow简介TensorFlow的基本使用 PyTorch概述 PyTorch简介PyTorch的基本使用 TensorFlow和PyTorch的对比结论 引言 随着深度学习的快速发展,机器学习框架在实际应用中起到…...

matlab 中的methods(Access = protected) 是什么意思

gpt版本 在 MATLAB 中,methods 是用于定义类方法的一部分。(Access protected) 是一种访问控制修饰符,它限制了方法的访问权限。具体来说,当你在类定义中使用 methods(Access protected) 时,你是在定义只有类本身及其子类可以访…...

【漏洞复现】Netgear WN604 downloadFile.php 信息泄露漏洞(CVE-2024-6646)

0x01 产品简介 NETGEAR WN604是一款由NETGEAR(网件)公司生产的无线接入器(或无线路由器)提供Wi-Fi保护协议(WPA2-PSK, WPA-PSK),以及有线等效加密(WEP)64位、128位和152…...