『QQ:1353814576』

关于提高.NET网站性能优化的注意事项常识以及常见优化方向


关于提高.NET网站性能优化的注意事项常识以及常见优化方向

做.NET开发这块工作也有好几年了,虽然平时工作主方向后台服务和桌面应用程序,但有时也会有个别任务会涉及webapi和网页加载性能问题(自己开发博客),经过这几年一次又一次的踩坑,虽然没经过系统的学习但也算是有了一些心得,见解比较浅显 但多数情况下都适用。

关于提高.NET网站性能优化的注意事项常识以及常见优化方向

这里列举一下一些比较常见的一些性能优化注意事项常识

数据库性能优化

  1. 数据库设计和优化 一个数据库的设计是否合理 很多程度上影响着网站未来的运行效率(前期数据少时可能看不出,等数据量上来了就是个难啃的骨头),设计之初一定要结合实际业务来设备业务表结构,能用主键做关联的字段的就无需考虑其他字段,必要的条件字段也要相应做好索引,非聚集索引字段顺序保持和查询语句的条件顺序一致。

  2. 数据库的连接和关闭 访问数据库是需要经过《创建连接》-《打开连接》和《关闭连接》这三个步骤。而这个请求过程往往需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源 切记注意数据库连接用完即关原则。 .NET开发中可以使用连接池(Connection Pool)来改善打开和关闭数据库对性能的影响。

  3. sql查询语句优化 传统的ADO连接请求消耗的资源相当大,随着SQL语句运行的时间越长,其占用的系统资源的时间也越长,响应的对数据库性能影响也就越大,比较明显的问题就是导致数据库无法进行插入更新等其他操作(高并发时尤为明显)。因此要保证语句可以在尽可能少的时间内可以完成。合理的运用索引条件字段可以很大程度提升数据库查询效率,join联合查询以及字段嵌套查询能不用就不要用

  4. 使用存储过程 存储过程:这个不用多说了,性能比直接写语句查询起来要高,最重要的是它可以减少数据库操作语句在网络中的传输,在数据量小的情况下二者区别不大,程序后期维护排查问题起来比较麻烦一些。

  5. 大量数据同时入库 当有大量数据需要写入数据库时不要一条一条往里写亦或者拼接成一段庞大的sql插入语句进行操作,性能非常之差。 解决办法:使用sqlbulkcopy进行数据写入,几w数据库往往只需要几秒就可以完成入库,效率非常之快。

网站后端代码优化

  1. 文本字符串操作性能优化 在连接字符串时,经常使用"+"号直接将数字添加到字符串中。这种方法虽然简单,也可以得到正确结果。实际这个操作也暗藏不同数据类型装箱性能问题,一般情况下不明显(毕竟现在的设备性能比较大多过剩),这里就不细说了 解决办法:使用值类型的ToString和StringBuilder类方法可以避免装箱操作,从而提高应用程序性能。

  2. 网页数据文件缓存 对于一些不经常变动的网页或文件采用缓存输出,这样服务器收到请求就直接返回缓存,可以避免占用服务的IO性能,在高发的情况下缓存的作用尤为明显,注意缓存也并非越多越好服务器的性能控制数量在合理的范围内。

  3. 文件操作及时释放 切记高并发情况下 文件读取要加访问锁, 读取文件直接写入内存然后立即释放掉(避免占用),需要文件读取操作内存里的文件流就可以了,不然很容易出现并发读取文件数出现无法读取文件的报错。

  4. 异步 async await 有微软官方背书,比常规的异步性能要好,在操作大量数据需要长时间异步等待时 可以使用该关键词进行修饰。

网站前端优化

  1. 减少前端请求量 能合并的可以合并到一个请求里 比如多个不同的js脚本或者css央视可以合并到一个文件里

  2. 使用网络cdn加速 将一些静态文件进行托管,比如jquery vue等js常用插件,图片也可以缓存

  3. 碎图标文件合并: 多个小图标文件可以合并到一个大图片里 前端使用时用css进行展示位置定位

....

站长水平比较水 其实还有很多需要注意的这里就不一一说了 。