1. Dotnet9首页
  2. .NET
  3. ASP.NET Core

2020最新面试宝典带答案性能优化专题

注:答案均以红色字体标注!答案仅供参考!

文章目录

1、谈谈你关于前端优化的经验。

答:减少http请求数是最重要也是最有效的方法,可以通过以下方法来减少http请求

(1)合理的设置http缓存,恰当的缓存设置可以大大减少http请求。要尽可能地让资源能够在缓存中待得更久

(2)从设计实现层面简化页面,保持页面简洁、减少资源的使用时是最直接的。

(3)资源合并与压缩,尽可能的将外部的脚本、样式进行合并,多个合为一个。

(4) CSS Sprites,通过合并 CSS图片,这是减少请求数的一个好办法

2、谈谈如何使用前端缓存。

答:在前端浏览器中,有些数据(比如数据字典中的数据),可以在第一次请求的时候全部拿过来保存在js对象中,以后需要的时候就不用每次都去请求服务器了。对于那些大量使用数据字典来填充下拉框的页面,这种方法可以极大地减少对服务器的访问。这种方法特别适用于使用iframe的框架。

具体实现思路和方法:

创建一个cache.js文件:前端页面,定义那些数据需要一次性拿到前端缓存,定义一个对象来保存这些数据即可!

3、单个请求数据量过大,如何优化?请做详细描述!

答: 请求压缩,大部分浏览器支持的是:Gzip格式,实现步骤:

1.浏览器请求服务器时,服务器可以获取到浏览器支持的格式;

2.在服务器代码中,加入判断浏览器支持压缩的格式,按照符合的格式压缩请求;

3.返回给浏览器。浏览器可以自行解析。 

4、 css  Javascript如何压缩引入?

答: 可以使用打包工具,比如: YUI Compressor, Microsoft AjaxMin, uglifyjs uglifycss,或者在MVC程序中,可以使用BundleConfig压缩,把多个css,js 集合到某一个包,在项目使用的时候仅仅只需要引入集合包即可!

5、谈谈css js 加载的顺序对页面性能的影响!

答:

1.答:将 CSS 放在 head 标签里

2.启用 CDN 优化静态资源加载速度

3.合理使用外部 JS 的三种加载方式

正常模式:
这种情况下 JS 会阻塞浏览器,浏览器必须等待 index.js 加载和执行完毕才能去做其它事情。

async 模式:
async 模式下,JS 不会阻塞浏览器做任何其它的事情。它的加载是异步的,当它加载结束,JS 脚本会立即执行。

defer 模式:
defer 模式下,JS 的加载是异步的,执行是被推迟的。等整个文档解析完成、DOMContentLoaded 事件即将被触发时,被标记了 defer 的 JS 文件才会开始依次执行。

6、如果页面中图片太多,从性能上来说,如何提高性能?

答:

1.方案一:将图片服务和应用服务分离(从架构师的角度思考)

2. 图片懒加载:像淘宝或者京东这样的APP页面上有很多图片,当我们滑到下一屏时下一屏的图片才会加载,这就采用了图片懒加载的方式.

3. css Sprites:当网站或者APP有大量小icon,如果上传到图片服务器比如CDN, 要加载所有这些小icon将增加大量请求,而CDN是按流量收费的,这无疑将增加很多成本.

CSS Sprites 技术早已不新鲜,就是将这些小icon合并成一张图片,只需要加载一次,每次通过background-position来控制显示icon,这样就可以节约大量请求,节约成本.

7、详解IIS如何调优?

答:

一、一般方案:

1、基本设置

  [1] 队列长度: 默认值1000,将原来的队列长度改为 65535。

  [2] 启动32位应用程序:默认值False,改为True, 否则安装一些32的组建或32位的php都会出错。

  [3] 托管管道模式:Integrated 或 Classsic。 

  
2、高级设置

  [1] 闲置超时(分钟):默认20分钟,修改设长。

  [2] 快速故障防护 → 已启用 :默认True,改为False。 

3、解决PEP第一次打开PEP速度慢

  回收间隔时间

  使用windows server 2008 r2解决回收假死的问题

打开应用程序池 -> 高级设置 ->在“禁止重叠回收”里选择“true”,这样就有效避免了应用程序池回收假死问题。

二.支持同时十万个请求:

1. 调整IIS 7应用程序池队列长度

  将原来的队列长度由默认值 1000 改为 65535。当然这里的队列长度你可以根据自己的 访问用户*1.5 来设置,例如:有2000用户,此处就可以设置为3000(3000=2000用户数*1.5)。

2.  调整IIS 7的appConcurrentRequestLimit设置

  由原来的默认5000改为100000。

  [1] 在cmd中执行:

  c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

  [2] 在%systemroot%\System32\inetsrv\config\applicationHost.config中可以查看到该设置:

  <serverRuntime appConcurrentRequestLimit=”100000″ />

3. 调整machine.config中的processModel>requestQueueLimit的设置

  [1] 单击“开始”,然后单击“运行”,或者 windows + R。

[2] 在“运行”对话框中,键入 notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config,然后单击“确定”。(不同的.NET版本路径不一样,可以选择你自己当前想设置的.NET版本的config)

  [3] 找到如下所示的 processModel 元素:<processModel autoConfig=”true” />

  [4] 将 processModel 元素替换为以下值:<processModel enable=”true” requestQueueLimit=”15000″ />

  [5] 保存并关闭 Machine.config 文件。
  由原来的默认5000改为100000。

<configuration>

    <system.web>

    <processModel enable=”true” requestQueueLimit=”100000″/>

4. 修改注册表,调整IIS 7支持的同时TCPIP连接数

  由原来的默认5000改为100000。在cmd中执行:

  reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000

020最新面试宝典带答案性能优化专题"

可在注册表中查看

5. 运行命令使用设置生效

  net stop http  & net start  http & iisreset

8. 谈谈你在之前工作中,有关于后端性能优化的经验!

答:代码层面优化,组建高性能Sql,

使用内存数据库;

使用RDD;

增加缓存;

使用SSD;

使用多线程;

分布式部署程序;

9. 谈谈你了解的缓存!

答:本地缓存,分布式缓存,Memcache,Redis;Mongodb;

10.请描述Redis的特点:

答:Redis的特点:

内存数据库,速度快,也支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

Redis支持数据的备份,即master-slave模式的数据备份。

支持事务

Redis的优势:

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

丰富的数据类型