提升对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文件的加载也可以异步的方式。文章由http://www.seojishu.org整理,转载请注明

解决方案

解决方案二:
标题和内容完全不符,你说所谓的“IO优化”,就说好了,标题干嘛叫什么asp.net性能讨论。就好比我写一篇《论中国全面进入小康社会》,这么写:要想中国进入小康社会,必须提高家庭的收入,为了提高收入,我觉得要勤劳,怎么样算勤劳?要做到以下几点:1、2、3……。
解决方案三:
好吧,虽然不知道你想说明什么,但是觉得你很牛B
解决方案四:
想法不错,期待进一步有实质性解决方案的文章
解决方案五:

解决方案六:
不用想了只要能通过横向扩展提高性能的都不是问题所以瓶颈肯定是在数据库事务这一块
解决方案七:
这个似乎懂点优化的基本都知道要这么做
解决方案八:
我觉得楼主还局限在一个服务器一个网站的小网站的模式如果你要做成google那种支持几百上千万用户同时登陆的,只有一个服务器你再优化也没用
解决方案:
所以我只看了你12345的标题,根本没看内容看到你根本没有讨论什么分布式交互,负载均衡,我就知道这东西根本没什么用
解决方案:
对于一个局域网应用的小网站,登陆用户不超过100人的,做不做优化性能上也没什么大差别
解决方案:
对各部分的优化,没有绝对。有时候容易拿出一些非常传统的小东西来进行反复“优化”,甚至不惜引入各种冗余,容易过火地搞得让设计和维护反而陷入一团乱麻。反过来也有许多该优化的地方,因为没有更新到更上档次的模式,而总是优化得差一些。我举一个不太好最终决定的简单例子。比如说网站里有很多资源文件,有脚本文件、图片文件、甚至html文件本身。我们通常会在优化时,首先测试服务器上对这样的文件是否完善地支持404状态检测,避免重复下载文件。但是有的人就说了“许多大网站其实都不是这样的”,而是几乎全都使用“完全客户端缓存”方式。比如说一个图片的路径可能是src="http://www.abc.com/site1/poiu.png?version=82312"输出这个图片时告诉浏览器端“永不过期”,于是浏览器也就不需要经常到服务器上去判断这个图片有没有新版本了(这就减少了一次访问)。然后当这个图片修改了的时候,将路径修改为src="http://www.abc.com/site1/poiu.png?version=82313"有人认为这就一定比404检测要好。实际上对优化方法知道得多一两个,也不一定就能很极端地去抛弃什么东西。比如说如果我们的网站一个大V的头像改掉了,你还需要将以前所有使用过这个头像的html页面全都重新生成一遍、并重新把新页面分发出去吗?这就是一个问题。因此优化,要考虑什么是“刚好合适”,考虑到我们有没有那么多闲人总能在关键时机想起来那些已经弄得很冗余的事情,根据我们的自动化水平来决定哪种优化方法“刚好合适”,而不是绝对化。
解决方案:
列出优化方法进行分享,原则上一定是好的。我们还要讨论工程方法,理论与应用条件相配合。特别是我们要很“奸”地会在合适的时机放弃一些小伎俩,自己研发更高大上一点东西。

时间: 2024-11-05 22:49:37

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

Asp.net 网站性能优化二则分享_实用技巧

随着后端优化空间越来越小,现在越来越多的网站更注重前端性能的优化,就是浏览器,http层面的优化,这里写两点最简单最有效的 asp.net网站优化技巧. 了解常见的网站性能优化技巧 首先我们要学一些优化网站性能和体验的理论和基础知识,雅虎已经帮我们总结好了,详见参考链接中的几篇文章,有好心人已经给翻译成中文了.这里面提到的一些技巧可操作性都很强,建议每一个网站开发人员都仔细学习并进行实践,可以说不了解这里面说的优化技巧,提升网站前端性能就无从谈起. 诊断网站性能 要想优化网站的前端性能,首先要查

记一次ASP.NET MVC性能优化(实际项目中)

前言 在开发中为了紧赶项目进度而未去关注性能的问题,在项目逐渐稳定下来后发现性能令人感到有点忧伤,于是开始去关注这方面,本篇为记录在开发中遇到的问题并解决,不喜勿喷.注意:以下问题都是在移动端上出现,无法确定在网站中是否也同样会出现. 卡顿问题 请求方式 项目属于移动端,在手机上查看某一列表时并进行向下滑动时经常性卡顿问题,滚动的插件采用的是iscroll,当然怀疑是不是这个插件问题,但是很快就排除了这个问题,在其他页面未出现这个问题,后来接着想因为在脚本中进行Ajax请求超时时间设置为30秒,

IIS7下Asp.net网站优化站点性能技巧

首先我们要学一些优化网站性能和体验的理论和基础知识,雅虎已经帮我们总结好了,详见参考链接中的几篇文章,有好心人已经给翻译成中文了. Web服务器的性能优化有很多资料介绍了,多台主机负载均衡,查询结果的多级缓存,数据库索引优化等都是常见的优化手段.随着后端优化空间越来越小,现在越来越多的网站更注重前端性能的优化,就是浏览器,http层面的优化,这里写两点最简单最有效的asp.net网站优化技巧. 了解常见的网站性能优化技巧 首先我们要学一些优化网站性能和体验的理论和基础知识,雅虎已经帮我们总结好了

PHP学习之挖掘细节提升网站性能

相信互联网已经越来越成为人们生活中不可或缺的一部分.ajax,flex等等富客户端的应用使得人们越加"幸福"地体验着许多原先只能在C/S实 现的功能.比如Google机会已经把最基本的office应用都搬到了互联网上.当然便利的同时毫无疑问的也使页面的速度越来越慢.自己是做前端开发的,在性能方面,根据yahoo的调查,后台只占5%,而前端高达95%之多,其中有88%的东西是可以优化的. 以上是一张web2.0页面的生命周期图.工程师很形象地讲它分成了"怀孕,出生,毕业,结婚&

PHP教程:挖掘细节提升网站性能

相信互联网已经越来越成为人们生活中不可或缺的一部分.ajax,flex等等富客户端的应用使得人们越加"幸福"地体验着许多原先只能在C/S实 现的功能.比如Google机会已经把最基本的office应用都搬到了互联网上.当然便利的同时毫无疑问的也使页面的速度越来越慢.自己是做前端开发的,在性能方面,根据yahoo的调查,后台只占5%,而前端高达95%之多,其中有88%的东西是可以优化的. 以上是一张web2.0页面的生命周期图.工程师很形象地讲它分成了"怀孕,出生,毕业,结婚&

【好书试读】速度与激情:以网站性能提升用户体验

开始试读:https://yqfile.alicdn.com/1d4578a32e3f5120cd35a1e53e2000b5.pdf 天猫购买链接:速度与激情:以网站性能提升用户体验 Web设计师在权衡外观设计与网站性能时总是要作出艰难的选择.良好的内容.布局.图片和交互对于吸引用户来说至关重要,这其中的每一个元素都会对页面加载时间和网站的感知性能造成巨大影响.本书会帮助你在项目过程中将页面速度放在首位,向你展示如何验证最关键的设计决策,从而提升页面加载速度,打造最佳用户体验. 如果你是Web

书评:速度与激情:以网站性能提升用户体验之我见

    该书试读内容不多,一共48页,正式内容是21页开始,也就是说,只能试读28页的内容.不过叶落知秋,28页也足够可以推敲出整本书大致的内容和风格了.     该书主要从设计师的角度,阐述了页面设计对性能的影响.虽然往往整个网站的访问速度,页面设计的影响只占了一小部分,但是毕竟也是其中的一个环节,也是有值得探讨的地方.由于我从事网页设计的工作较久,所以其中有不少地方我有不同的意见.此处抽出几点,略做探讨.     作者在开篇认为,网页设计对网站性能的提升有举足轻重的重要,但是以我多年的工作经

速度与激情: 以网站性能提升用户体验

首先说说为什么会选择大数据和这本前段网站技术的.也许有很多朋友会说,网站和大数据一个前段,以后后端,两个技术完全不搭界啊.这个想法不能说有错,但是也并不是全对.首先,网站是前端技术,是与用户接触的最前线,也是获取数据的重要渠道之一.随着移动开发大量使用hybrid等混合技术以后,网站其实已经不仅仅指单纯的website了.所以单单从提升网站性能的技术讲,很多技术是可以运用到移动开发中的.这也就是为什么我选这本书,<速度与激情: 以网站性能提升用户体验>,的原因. 选择这本书的第二个原因,应该也

Cars.com利用大数据提升网站性能

汽车销售网站Cars.com通过对Web用户的点击量和机器生成的日志文件进行分析,提升了企业的营收,并且成功抵御了恶意机器人. 电子商务已经在营收和用户体验质量之间建立起了关联.对于Cars.com的大数据而言,对体验程度进行衡量已经成为其大数据分析的主要努力目标.通过对每月1200万次的网站访问量进行分析,该公司不仅针对消费者优化了用户体验,还获得了深度的运营洞察力和诈骗防范能力. 作为一家汽车消费者搜索.咨询和购买汽车的专业网站,Cars.com利用横幅广告对所有主要汽车制造商的轿车.SUV