`

提升对ASP.NET网站性能和多并发的设计的讨论

 
阅读更多

对于如何提高应用程序的性能(无论是互联网应用还是企业级应用)我的观点一直是考虑一个核心:IO处理。因为我认为目前的CPU的处理能力已经是非常高了,正常编写的在内存中处理的代码没有太严重的问题都不会对CPU造成很大的影响,性能往往是被IO所限制。由于我和我的团队沟通时间比较长,所以我们之间的一个简单的IO说明往往覆盖了很多的含义,这些IO包括了磁盘IO、网络IO、内存IO以及各种设备的IO处理。我们的团队经验是尽可能的在各种IO处理中寻找出可以提升的效率。

以下,我将从后向前说明我们团队在提升IO处理的经验和认识

1 数据库

数据库是最明显的消耗磁盘IO的组件,提高数据的性能有多种,SQL语句写的好,也是减少了表的扫描(明显是IO动作),设计合理的索引又是提高了IO处理能力,将不在变化的历史数据独立的存储也减少了复杂IO的处理,为表设计冗余的字段也是为了减少IO读写提高性能,将数据表分布在不同的磁盘上也是提升IO效率。还有其他的各种方式,比如查询缓存、连接池神马的,原则同样如此。

总之,减少数据库和磁盘之间过度的活动,能尽可能的提升数据库效率。

2 数据缓存

内存IO的处理效能自然要远高于磁盘IO,数据的缓存就是减少磁盘操作,或至少减少性能更低的数据库操作。对于页面的结果数据缓存我们的通常简单方案是准备两个缓存区:一个内存,一个文件

内存的缓存区,我们直接用HttpRuntime.Cache,在这个缓存区中我们放置特征码和数据(数据往往是页面需要的数据,一般我们放置JSON格式),过期策略上我们自然选择NoAbsoluteExpiration。

当数据需要从内存缓存区中被撤掉时,我们会将这个过期数据再次处理,我们在Cache中有一个集合,这个集合放置了被撤掉的缓存数据的特征码,而对应的数据写入磁盘上的一个文件中。

用户请求数据时,先检查特征码是否在正常的缓存中,如果不在,则检查是否在过期区,如果是过期区,则去读取磁盘文件(至少减少了数据库开销),都没有,那去查数据库吧。

3 网络传输

后台数据最终要传递给浏览器,减少网络传输的字节也是提高吞吐的重点,简单的说,就是对网络IO处理优化。减少webform中的ViewState信息,或者干脆不用webform,改用MVC,或者直接httpcontext自己来控制所有状态信息。我们采用ashx并且为不同的服务开辟不同的ashx通道提高性能。由于ashx不必做一系列动作、不用经过一连串的事件处理、一大堆的控件状态管理(加载并解析ViewState,还原、更新控件的值、保存ViewState等),直接返回操作结果,也就不用耗费更多的服务器资源,返回的格式也非常好灵活,所有用ashx在基于文档型的网站中我们运用的很好。

另外一点ashx对开发成员的工作隔离也是非常好。

除了编程影响传输,页面需要的图片和css文件,js文件合理的处理减少HTTP请求也能提高网络IO效率:比如将图片合并,js、css压缩等简单的方式虽然改变不多,但并发的时候降低服务器的压力总是好的。

4 页面渲染和体验

优化页面的html结构,有时候为了加快渲染,不必完全符合W3C的规范,减少div嵌套,使用固定宽度,主要javaScript的细节可以提高很好的体验。我在chrome中的测试结果可以发现,很多情况下网络的速度远远高于渲染的速度,所以能提高页面的处理,对个体用户的体验是很有效的。

5 数据提交

在可靠的情况下,多考虑异步模式或多线程。对数据库的提交,web服务的访问都可以使用异步模型,当然是在可靠的情况下。

页面的ajax自然也是异步的一种方式,另外js文件的加载也可以异步的方式。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    构建高性能可扩展ASP.NET网站 + 源代码----英文版

    7. **源代码分析**:书中包含的实例代码可以帮助读者理解和应用书中的理论知识,通过实际操作加深对ASP.NET性能优化和可扩展性的理解。 8. **持续集成与自动化测试**:介绍如何设置持续集成环境,进行单元测试和...

    asp.net游戏网站

    总的来说,ASP.NET游戏网站利用了ASP.NET的强大功能和灵活性,结合前端技术和游戏引擎,构建出功能完备、安全可靠的网络游戏平台。开发过程中,需要考虑用户体验、数据管理、安全性以及性能优化等多个方面,以满足...

    ASP.NET课程设计

    通过这个课程设计,你不仅能深化对ASP.NET和VS2008的理解,还能获得实际项目经验,这对于提升你的编程技能和解决实际问题的能力大有裨益。在实践中不断学习和探索,你将能熟练掌握ASP.NET开发,并有能力构建自己的...

    ASP.NET城市公交查询系统论文

    ASP.NET是微软公司推出的一种用于构建动态网站、Web应用和服务的开发平台,它基于.NET Framework,提供了丰富的功能和工具,使得开发者能够更快速、更便捷地创建功能完善的网络应用。在公交查询系统中,ASP.NET的...

    asp.net大型社交网站源码

    【ASP.NET 大型社交网站源码解析】 ASP.NET 是微软公司推出的一种基于 .NET Framework 的Web应用程序开发平台,它...学习并理解这个源码,对于提升ASP.NET开发技能,尤其是构建复杂Web应用的能力,有着重要的价值。

    毕业设计完整版ASP.NET通用作业批改系统设计(源代码+论文).zip

    通过这个毕业设计,学生可以深入学习和实践ASP.NET开发技术,掌握Web应用的设计原则,提升问题解决和团队协作的能力。同时,此系统对于教育机构来说,能有效提升作业批改的效率,增强教学互动,有助于教学质量的提升...

    ASP.NET Core2.0 High Performance

    首先,本书会介绍.NET Core 2.0的基础知识,包括其架构、模块化设计和对性能优化的改进。.NET Core相较于传统的.NET Framework,具有更小的体积、更快的启动时间和更好的资源利用率。了解这些基础知识对于后续的性能...

    ASP.NET提高性能技巧

    ASP.NET是一种由微软开发的服务器端Web应用...以上是提高ASP.NET性能的一些关键点,实际应用中应结合具体项目需求和资源条件灵活运用,持续监控和优化,确保应用在高并发、大数据量的情况下依然能保持良好的运行效率。

    ASP.NET课程教学网站论文

    ASP.NET课程教学网站论文主要...总结来说,ASP.NET课程教学网站论文深入讨论了使用ASP.NET技术构建教育平台的各个方面,包括技术选型、架构设计、功能实现以及性能优化,对于学习和理解ASP.NET开发具有很高的参考价值。

    基于asp.net的毕业设计管理系统

    【标题】:“基于asp.net的毕业...通过以上对各个模块的详细解析,我们可以看到基于ASP.NET的毕业设计管理系统是一个全面的解决方案,它整合了多个IT技术,旨在为高校提供一个高效、安全且用户友好的毕业设计管理平台。

    memcached+asp.net4.0

    通过以上讲解,我们可以看到,"memcached+asp.net4.0"的项目涉及到了分布式缓存的使用、性能优化和.NET环境下的集成实践,对于提升ASP.NET应用程序的性能具有重要意义。通过深入学习和实践,开发者可以更好地利用...

    asp.net论坛系统

    ASP.NET论坛系统是一种基于微软的ASP.NET技术构建的在线讨论平台,主要用于实现用户之间的互动交流。这个系统通常包含了用户注册、登录、发帖、回帖、搜索、个人中心等一系列基本功能,是网络社区的重要组成部分。 ...

    用asp.net3.5开发社交网站

    它还包括ASP.NET AJAX,提供异步更新和用户体验提升,这对于创建响应迅速的社交网站至关重要。 二、网站架构设计 社交网站的核心是用户之间的互动,因此需要设计一个支持用户注册、登录、个人资料管理、好友关系、...

    ASP.NET电子商务网站(任务书,开题报告,需求分析).

    ASP.NET是一种由微软开发的用于构建Web应用程序的框架,...在实际开发ASP.NET电子商务网站时,还需要深入学习和应用数据库设计、安全性实践、SEO优化、支付网关集成等多个方面的知识,以确保网站的稳定运行和商业成功。

    ASP.NET 论坛系统

    ASP.NET 论坛系统是一个基于微软的ASP.NET技术构建的在线讨论平台,它提供了一个全面的论坛管理解决方案。ASP.NET是.NET框架的一部分,主要用于构建Web应用程序。这个论坛系统包括了可执行程序、源代码以及运行效果...

    asp.net多线程的TCP端口扫描程序的设计与实现(源代码+论文).rar

    这个项目作为毕业设计,不仅涵盖了ASP.NET的基础知识,还深入到了网络编程和多线程领域,对于学习者来说是一份宝贵的实践资料。通过分析和运行此程序,可以提升对网络通信、多线程编程以及ASP.NET应用开发的理解。

    ASP.NET多线程编程(一)

    - **ASP.NET多线程编程**:结合ASP.NET框架具体讨论多线程编程的实际应用场景和注意事项。 #### 线程基本概念 线程是操作系统分配处理器时间的基本单位,也是程序执行的基本单元。一个进程可以包含多个线程,这些...

    使用ASP.NET建立四六级学习论坛

    在构建一个基于ASP.NET的四六级学习论坛时,我们需要考虑多个关键知识点,这包括但不限于以下内容: 1. **ASP.NET框架**:ASP.NET是由微软提供的一个用于构建Web应用程序的框架,它支持多种编程语言,如C#、VB.NET...

    asp.net性能高级编程(pdg)

    总的来说,《ASP.NET性能高级编程》是一本全面覆盖ASP.NET性能优化各个方面的书籍,无论你是ASP.NET 1.1还是2.0的开发者,都可以从中获得宝贵的性能提升经验,为你的Web应用构建一个更强大、更稳定的运行环境。...

    ASP.NET BBS系统 源码

    为了处理高并发访问,BBS系统可能会使用缓存策略(如ASP.NET的Output Cache),数据库连接池,以及负载均衡等技术,以提升系统的响应速度和并发处理能力。 十、安全性 考虑到网络安全,BBS系统会采取措施防止SQL...

Global site tag (gtag.js) - Google Analytics