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

官方黄金网站软件app大全下载东莞常平常安医院

官方黄金网站软件app大全下载,东莞常平常安医院,长春做网站哪里好,wordpress 摘要字数一、返回多个数据集 检查你的访问数据库的代码#xff0c;看是否存在着要返回多次的请求。每次往返降低了你的应用程序的每秒能够响应请求的次数。通过在单个数据库请求中返回多个结果集#xff0c;可以减少与数据库通信的时间#xff0c;使你的系统具有扩展性#xff0c;…一、返回多个数据集   检查你的访问数据库的代码看是否存在着要返回多次的请求。每次往返降低了你的应用程序的每秒能够响应请求的次数。通过在单个数据库请求中返回多个结果集可以减少与数据库通信的时间使你的系统具有扩展性也可以减少数据库服务器响应请求的工作量。   如果用动态的SQL语句来返回多个数据集那用存储过程来替代动态的SQL语句会更好些。是否把业务逻辑写到存储过程中这个有点争议。但是我认为把业务逻辑写到存储过程里面可以限制返回结果集的大小减小网络数据的流量在逻辑层也不用在过滤数据这是一个好事情。   用SqlCommand对象的ExecuteReader方法返回一个强类型的业务对象再调用NextResult方法来移动数据集指针来定位数据集。返回多个ArrayList强类型对象。只从数据库中返回你需要的数据可以大大的减小你的服务器所耗用的内存。 二、对数据进行分页   ASP.NET的DataGrid有一个非常有用的功能分页。如果DataGrid允许分页在某一时刻它只下载某一页的数据另外它有一个数据分页的济览导航栏它让你可以选择浏览某一页而且每次只下载一页的数据。   但是它有一个小小的缺点就是你必须把所有的数据都绑定到DataGrid中。也就是说你的数据层必须返回所有的数据然后DataGrid再根据当前页过滤出当前页所需要的数据显示出来。如果有一个一万条记录的结果集要用DataGrid进行分页假设DataGrid每页只显示25条数据那就意味着每次请求都有9975条数据都是要丢弃的。每次请求都要返回这么大的数据集对应用程序的性能影响是非常大的。   一个好的解决方案是写一个分页的存储过程例如对Northwind数据库orders表的分页存储过程。你只需要传当前页码每页显示的条数两个参数进来存储过程会返回相应的结果。   在服务器端我专门写了一个分页的控件来处理数据的分页在这里我用了第一个方法在一个存储过程里面返回了两个结果集数据记录总数和要求的结果集。   返回的记录总数取决于要执行查询例如一个where条件可以限制返回的结果集的大小。因为在分页界面中必须要根据数据集记录的大小来计算总的页数所以必须要返回结果集的记录数。例如如果一共有1000000条记录如果用where条件就可以过滤成只返回1000条记录存储过程的分页逻辑应该知道返回那些需要显示的数据。 三、连接池   用TCP来连接你的应用程序与数据库是一件昂贵的事情很费时的事情微软的开发者可以通过用连接池来反复的使用数据库的连接。比起每次请求都用TCP来连一次数据库连接池只有在不存在有效的连接时才新建一个TCP连接。当关闭一个连接的时候它会被放到池中它仍然会保持与数据库的连接这样就可以减少与数据库的TCP连接次数。   当然你要注意那些忘记关的连接你应在每次用完连接后马上关闭它。我要强调的是无论什么人说.net framework中的GC(垃圾收集器)总会在你用完连接对象后调用连接对象的Close或者Dispose方法显式的关闭你的连接。不要期望CLR会在你想象的时间内关掉连接虽然CLR最终都要销毁对象和关闭边接但是我们并不能确定它到底会在什么时候做这些事情。     要用连接池优化有两条规则第一打开连接处理数据然后关闭连接。如果你必须在每次请求中多次打开或关闭连接这好过一直打开一个边接然后把它传到各个方法中。第二用相同的连接字符串或者用相同的用户标识当你用集成认证的时候。如果你没有用相同的连接字符串如你用基于登录用户的连接字符串这将不能利用连接池的优化功能。如果你用的是集成的论证因为用户很多所以你也不能充分利用连接池的优化功能。.NET CLR提供了一个数据性能计数器它在我们需要跟踪程序性能特性的时候非常有用当然也包括连接池的跟踪了。        无论你的应用程序什么时候要连在另一台机子的资源如数据库你都应该重点优化你连资源所花的时间接收和发送数据的时间以及往返回之间的次数。优化你的应用程序中的每一个处理点process hop它是提高你的应用的性能的出发点。     应用程序层包含与数据层连接传送数据到相应的类的实例以及业务处理的逻辑。例如在Community Server中要组装一个Forums或者Threads集合然后应用业务逻辑如授权更重要的这里要完成缓存逻辑。 四、ASP.NET缓存API    在写应用程序之前,你要做的第一件事是让应用程序最大化的利用ASP.NET的缓存功能。   如果你的组件是要在Asp.net应用程序中运行你只要把System.Web.dll引用到你的项目中就可以了。然后用HttpRuntime.Cache属性就可访问Cache了也可以通过Page.Cache或HttpContext.Cache访问。     有以下几条缓存数据的规则。第一数据可能会被频繁的被使用这种数据可以缓存。第二数据的访问频率非常高或者一个数据的访问频率不高但是它的生存周期很长这样的数据最好也缓存起来。第三是一个常常被忽略的问题有时候我们缓存了太多数据通常在一台X86的机子上如果你要缓存的数据超过800M的话就会出现内存溢出的错误。所以说缓存是有限的。换名话说你应该估计缓存集的大小把缓存集的大小限制在10以内否则它可能会出问题。在Asp.net中如果缓存过大的话也会报内存溢出错误特别是如果缓存大的DataSet对象的时候。 这里有几个你必须了解的重要的缓存机制。首先是缓存实现了“最近使用”原则 a least-recently-used algorithm当缓存少的时候它会自动的强制清除那些无用的缓存。其次 “条件依赖”强制清除原则expiration dependencies条件可以是时间关键字和文件。以时间作为条件是最常用的。在asp.net2.0中增加一更强的条件就是数据库条件。当数据库中的数据发生变化时就会强制清除缓存   五、预请求缓存   在前面我们只对某些地方作了一个小小的性能改进也可以获得大的性能提升用预请求缓存来提升程序的性能是很不错的。   虽然Cache API设计成用来保存某段时间的数据而预请求缓存只是保存某个时期的某个请求的内容。如果某个请求的访问频率高而且这个请求只需要提取应用修改或者更新数据一次。那么就可以预缓存该请求。我们举个例子来说明。   在BS的论坛应用程序中每一个页面的服务器控件都要求得到用于决定它的皮肤skin的自定义的数据以决定用哪个样式表及其它的一些个性化的东西。这里面的某些数据可能要长时间的保存有些时间则不然如控件的skin数据它只需要应用一次而后就可以一直使用。   要实现预请求缓存用Asp.net 的HttpContext类HttpContext类的实例在每一个请求中创建在请求期间的任何地方都可以通过HttpContext.Current属性访问。HttpContext类有一个Items集合属性在请求期间所有的对象和数据都被添加到这个集合中缓存起来。和你用Cache缓存访问频率高数据一样你可以用HttpContext.Items缓存那些每个请求都要用到的基础数据。它背后的逻辑很简单我们向HttpContext.Items中添加一个数据然后再从它里面读出数据。 六、后台处理   通过上面的方法你的应用程序应该运行得很快了是不是但是在某些时候程序中的一次请求中可能要执行一个非常耗时的任务。如发送邮件或者是检查提交的数据的正确性等。   当我们把asp.net Forums 1.0集成在CS中的时侯发现提交一个新的帖子的时候会非常的慢。每次新增一个帖子的时侯应用程序首先要检查这个帖子是不是重复提的然后用“badword”过滤器来过滤检查图片附加码作帖子的索引把它添加到合适的队列中验证它的附件最后发邮件到它的订阅者邮件箱中。显然这个工作量很大。   结果是它把大量的时间都花在做索引和发送邮件中了。做帖子的索引是一项很耗时的操作而发邮件给订阅都需要连接到SMTP服务然后给每一个订阅者都发一封邮件随着订阅用户的增加发送邮件的时间会更长。   索引和发邮件并不需要在每次请求时触发理想状态下我们想要批量的处理这些操作每次只发25封邮件或者每隔5分钟把所有的要发的新邮件发一次。我们决定使用与数据库原型缓存一样的代码但是失败了所以又不得不回到VS.NET 2005。   我们在System.Threading命名空间下找到了Timer类这个类非常有用但却很少有人知道Web开发人员则更少有人知道了。一旦他建了该类的实例每隔一个指定的时间Timer类就会从线程池中的一个线程中调用指定的回调函数。这意味着你的asp.net应用程序可以在没有请求的时候也可以运行。这就是后以处理的解决方案。你就可以让做索引和发邮件工作在后台运行而不是在每次请求的时候必须执行。   后台运行的技术有两个问题第一是当你的应用程序域卸载后Timer类实例就会停止运行了。也就是不会调用回调方法了。另外因为CLR的每个进程中都有许多的线程在运行你将很难让Timer获得一个线程来执行它或者能执行它但会延时。Asp.net层要尽量少的使用这种技术以减少进程中线程的数量或者只让请求用一小部分的线程。当然如果你有大量的异步工作的话那就只能用它了。 七、页面输出缓存和代理服务   Asp.net是你的界面层或者说应该是它包含页面用户控件服务器控件HttpHandlers 和HttpModules以及它们生成的内容。如果你有一个Asp.net页面用来输出htmlxml,imgae或者是其它的数据对每一个请求你都用代码来生成相同的输出内容你就很有必要考虑用页面输出缓存了。 只要简单的把下面的这一行代码复制到你的页面中就可以实现了 % PageOutputCache VaryByParams”none” Duration”60” % 就可以有效的利用第一次请求里生成的页面输出缓存内容60秒后重新生成一道页面内容。这种技术其实也是运用一些低层的Cache API来实现。用页面输出缓存有几个参数可以配置如上面所说的VaryByParams参数该参数表示什么时候触发重输出的条件也可以指定在Http Get或Http Post 请求模式下缓存输出。例如当我们设置该参数为VaryByParams”Report”的时候default.aspx?Report1或者default.aspx?Report2请求的输出都会被缓存起来。参数的值可以是多个用分号隔开参数。   许多人都没有意识到当用页面输出缓存的时候asp.net也会生成HTTP头集HTTP Header保存在下游的缓存服务器中这些信息可以用于Microsoft Internet安全性中以及加速服务器的响应速度。当HTTP缓存的头被重置时请求的内容会被缓在网络资源中当客户端再次请求该内容时就不会再从源服务器上获得内容了而直接从缓存中获得内容。   虽然用页面输出缓存不提高你的应用程序性能但是它能减少了从的服务器中加载已缓存页面内容的次数。当然这仅限于缓存匿名用户可以访问的页面。因为一旦页面被缓存后就不能再执行授权操作了。 八、 用IIS6.0的Kernel Caching   如果你的应用程序没用运行在IIS6.0(windows server 2003)中那么你就失去了一些很好的提高应用程序性能的方法。在第七个方法中我讲了用页面输出缓存提高应用程序的性能的方法。在IIS5.0中当一个请求到来到IIS后IIS会把它转给asp.net当应用了页面输出缓存时ASP.NET中的HttpHandler会接到该请求HttpHandler从缓存中把内容取出来并返回。   如果你用的是IIS6.0它有一个非常好的功能就是Kernel Caching而且你不必修改asp.net程序中任何代码。当asp.net接到一个已缓存的请求IIS的Kernel Cache会从缓存中得到它的一份拷贝。当从网络中传来一个请求的时Kernel层会得到该请求如果该请求被缓存起来了就直接把缓存的数据返回这样就完工了。这就意味着当你用IIS的Kernel Caching来缓存页面输出时你将获得不可置信的性能提升。在开发VS.NET 2005的 asp.net时有一点我是专门负asp.net性能的程序经理我的程序员用了这个方法我看了所有日报表数据发现用kernel model caching的结果总是最快的。它们的一个共同的特征就是网络的请求和响应量很大,但IIS只占用了5%的CPU资源。这是令人惊奇的。有许多让你使用用IIS6.0的理由但kernel cashing是最好的一个。 九、 用Gzip压缩数据   除非你的CPU占用率太高了才有必要用提升服务器性能的技巧。用gzip压缩数据的方法可以减少你发送到服务端的数据量也可以提高页面的运行速度同时也减少了网络的流量。怎么样更好的压缩数据取决于你要发送的数据还有就是客户端的浏览器支不支持IIS把用gzip压缩后的数据发送到客户端客户端要支持gzip才能解析IE6.0和Firefox都支持。这样你的服务器每秒能多响应一些请求同样你也减少了发送响应的数据量也就能多发送一些请求了。   好消息gzip压缩已经被集成在IIS6.0中了它比IIS5.0中gzip更好。不幸的是在IIS6.0中启用gzip压缩你不能在IIS6.0的属性对话中设置。IIS开发团队把gzip压缩功能开发出来了但他们却忘了在管理员窗口中让管理员能很方便的启用它。要启用gzip压缩你只能深入IIS6.0的xml配置文件中修改它的配置。   除了阅读本文以外看看Brad Wilson写的 IIS6 压缩一文http://www.dotnetdevs.com/articles/IIS6compression.aspx另外还有一篇介绍aspx压缩基础知识的文章Enable ASPX Compression in IIS。但是要注意在IIS6中动态压缩和kernel cashing是互斥的。 十、 服务器控件的ViewState   ViewState是asp.net中的一个特性它用于把生成页面要用的一状态值保存在一个隐藏域中。当页面被回传到服务器时服务器要解析校验和应用ViewState中的数据以还原页面的控件树。ViewState是一个非常有用的特性它能持久化客户端的状态而不用cookie或者服务器的内存。大部分的服务器控件都是用ViewState来持久化那些在页面中与用户交互的元素的状态值。例如用以保存用于分页的当前页的页码。   用ViewState会带来一些负面的影响。首先它加大的服务器的响应和请求的时间。其次每次回传时都增加了序列化和反序列化数据的时间。最后它还消耗了服务器更多的内存。   许多的服务器控件很趋于使用ViewState如DataGrid而有时候是没有必须使用的。默认情况下是允许使用ViewState的如果你不想使用ViewState的话你可以在控件或页面级别把关闭它。在控件中你只要把EnableViewState属性设为False就可以了你也可以在页面中设置使它的范围扩展到整个页面中 % Page EnableViewState”false” % 如果页面无需回传或者每次请求页面只是呈现控件。你就应该在页面级别中把ViewState关掉。转载于:https://www.cnblogs.com/dingjie08/archive/2009/07/22/1528336.html
http://www.zqtcl.cn/news/309961/

相关文章:

  • jq网站模板宣城有做网站的公司吗
  • 江苏个人备案网站内容大连seo加盟
  • 服装网站建设公司地址公司网站建设需要注意什么
  • 免费行情软件网站下载安装电子商务网站建设实训报告
  • wordpress怎么添加企业网站美化网站公司
  • 工作室网站源码全球军事网站
  • 网站设计模板免费建站珠海正规网站制作排名费用多少
  • 北京沙河教做网站的wordpress增加自适应功能
  • 中国著名的个人网站网站设计怎么做ppt答辩
  • 郑州做招商的网站网站后台主流网站开发语言
  • 专业足球网站开发铜陵网站优化
  • 南昌高端网站开发山西太原网站建设公司
  • 青岛专业制作网站的公司吗百度咨询
  • 自定义网站模块深圳宝安区有什么好玩的地方
  • 如何增加网站的外链微平台网站支持html5实现游戏
  • 平台网站建设网站邯郸seo优化
  • 做网站着用什么软件盐城网站建设电话
  • 自己的网站wordpress自动变化文字
  • 北京制作网站公司哪家好wordpress小工具不显示不出来
  • 如何建设一个新的网站h5网站建设价格
  • 无锡专业做网站的怎么攻击php做的网站
  • 盐城网站建设代理商wordpress定义字体颜色
  • 成都旅游网站建设地址自己做的网站怎么被搜索出来
  • 网站建设免费免代码商城微网站如何做
  • 网站建设域名是什么东莞网络科技营销
  • 法语网站建设高端网站建设 骆
  • vue网站开发注意事项做设计想接外单去哪个网站好
  • 免费模板下载网站推荐苏州seo
  • 徐州市水利工程建设有限公司网站网站建设技术团队有多重要性
  • 合肥佰瑞网站搜索引擎优化步骤