Web开发性能优化总结 转载

1.    使用存储过程, (如果在程序里用exec 存储过程 参数,这样执行似乎并没有快多少)

           在数据库里是预编译的,也不需要在字符串传输上花费大量时间。  防sql注入攻击。

    2.     尽量优化数据库语句,使逻辑尽量简单。      

          @  还有就是在使用函数时    charindex   >like > padindex  效率依次递减。  

          @查询字段是否包含在以,分隔的字段串时,最好不要用in  速度非常慢。  还有好多,可以总结的,这里就不再描述了。

    3.   EnableViewState(页面的视图状态)。如果无特殊要求设置为false。

          使用ViewState ,每个对象都必须先序列化到 ViewState 中,然后再通过回传进行反序列化,因此使用 ViewState是没有代价的。尽量减少使用对象,

          如果可能,尽量减少放入 ViewState 中的对象的数目。下面情况基本上可以禁用viewstate:

        (1)页面控件 (.ascx)

        (2)页面不回传给自身。

        (3)无需对控件的事件处理。

        (4)控件没有动态的或数据绑定的属性值(或对于每个postpack都在代码中处理)

         单个页面或每个页面都禁用 ViewState,如下所示:

         单个页面:<%@ Page EnableViewState="False" %>

         每个页面:在 web.config 中 <Pages EnableViewState="false" />

         EnableSessionState保持默认值即可(如果页面用到sessionstate它才会占用资源)。

         EnableViewStateMac如果无安全上的特殊要求,保持默认值。

   4.   Pagelayout.页面布局模型。建议使用Flowlayout(元素不带绝对定位属性添加).Gridlayout(绝对定位属性)由于采用绝对定位,将会比Flowlayout生产更多的          代码,主要是控件的定位信息。  radiobuttonlist   和  checkboxlist等

   5.   项目发布的时候切记解除页面的Debug状态

   6.   尽量选择html控件。能在客户端实现的功能就在客户端实现(熟练掌握javascript),减少服务器的压力。

         数据控件选择顺序:Repeater、DataList、  DataGrid

   7.   在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间,避免出现超出连接限制的情况

   8.   字符串操作性能优化

         使用值类型的ToString方法
     在连接字符串时,经常使用"+"号直接将数字添加到字符串中。这种方法虽然简单,也可以得到正确结果,但是由于涉及到不同的数据类型,数字需要通过装箱          操 。作转化为引用类型才可以添加到字符串中。但是装箱操作对性能影响较大,因为在进行这类处理时,将在托管堆中分配一个新的对象,原有的值复制

         到新创建的对象中。使用值类型的ToString方法可以避免装箱操作,从而提高应用程序性能。

        运用StringBuilder类
     String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非

        很显著。在处理字符串时,最好使用StringBuilder类,其.NET 命名空间是System.Text。该类并非创建新的对象,而是通过Append,Remove,Insert

        等方法直接对字符串进行操作,通过 ToString方法返回操作结果。 

   9.  只要可能就缓存数据或页输出

        ASP.NET 提供了一些简单的机制,它们会在不需要为每个页请求动态计算页输出或数据时缓存这些页输出或数据。另外,通过设计要进行缓存的页和数据请

        求 (特别是在站点中预期将有较大通讯量的区域),可以优化这些页的性能。与 .NET Framework 的任何 Web 窗体功能相比,适当地使用缓存可以更好的

        提高站点的性能,有时这种提高是超数量级的。使用 ASP.NET 缓存机制有两点需要注意。首先,不要缓存太多项。缓存每个项均有开销,特别是在内存使

        用方面。不要缓存容易重新计算和很少使用的项。其次,给缓存的项分配的有效期不要太短。很快到期的项会导致缓存中不必要的周转,并且经常导致更多的

        代码清除和垃圾回收工作。若关心此问题,请监视与 ASP.NET Applications 性能对象关联的 Cache Total Turnover Rate 性能计数器。高周转率可能说

        明存在问题,特别是当项在到期前被移除时。这也称作内存压力。

 10.  使用 HttpServerUtility.Transfer 方法在同一应用程序的页面间重定向
    采用 Server.Transfer 语法,在页面中使用该方法可避免不必要的客户端重定向。但要根据情况区分response.redirect .response.execute的使用方

       法。区别对待。        
  11. 适当地使用公共语言运行库的垃圾回收器和自动内存管理
   小心不要给每个请求分配过多内存,因为这样垃圾回收器将必须更频繁地进行更多的工作。另外,不要让不必要的指针指向对象,因为它们将使对象保持活动状        态,并且应尽量避免含 Finalize 方法的对象,因为它们在后面会导致更多的工作。特别是在 Finalize 调用中永远不要释放资源,因为资源在被垃圾回收器回收

      之前可能一直消耗着内存。最后这个问题经常会对 Web 服务器环境的性能造成毁灭性的打击,因为在等待 Finalize 运行时,很容易耗尽某个特定的资源。

   12. 不要依赖代码中的异常

        因为异常大大地降低性能,所以您不应该将它们用作控制正常程序流程的方式。如果有可能检测到代码中可能导致异常的状态,请执行这种操作。不要在处理该         状态之前捕获异常本身。常见的方案包括:检查 null,分配给将分析为数字值的 String 一个值,或在应用数学运算前检查特定值。下面的示例演示可能

        导致异常的代码以及测试是否存在某种状态的代码。

   13.使用 HttpResponse.Write 方法进行字符串串联
   该方法提供非常有效的缓冲和连接服务。但是,如果您正在执行广泛的连接,请使用多个 Response.Write 调用。

       下面示例中显示的技术比用对 Response.Write 方法的单个调用连接字符串更快。

Response.Write("atest");
       Response.Write(strString);
       Response.Write("boxbig");
14.除非有特殊的原因要关闭缓冲,否则使其保持打开
  禁用 Web 窗体页的缓冲会导致大量的性能开销。  
15.避免到服务器的不必要的往返过程
       使用 Page.IsPostBack 避免对往返过程执行不必要的处理
       虽然您很可能希望尽量多地使用 Web 窗体页框架的那些节省时间和代码的功能,但在某些情况下却不宜使用 ASP.NET 服务器控件和回发事件处理。通常,
只有在检索或存储数据时,您才需要启动到服务器的往返过程。多数数据操作可在这些往返过程间的客户端上进行。  
16.ASP.NET应用程序性能测试
   在对ASP.NET应用程序进行性能测试之前,应确保应用程序没有错误,而且功能正确。具体的性能测试可以采用以下工具进行:Web Application
Strees  Tool (WAS)是Microsoft发布的一个免费测试工具。它可以模拟成百上千个用户同时对web应用程序进行访问请求,在服务器上形成流量负载,
从而达到测试的目的,可以生成平均TTFB、平均TTLB等性能汇总报告。 Application Center Test (ACT) 是一个测试工具,附带于Visual Studio.NET的
企业版中,是Microsoft正式支持的web应用程序测试工具。它能够直观地生成图表结果,功能比WAS多,但不具备多个客户机同时测试的能力。服务器操作
系统"管理工具"中的"性能"计数器,可以对服务器进行监测以了解应用程序性能。微软还是出了IIS日志查看工具 LogParserLizardSetup.msi ,
LogParser.msi 两者配合使用。可查看每一个页 面加载调用执行的时间。  
17.  压缩js,js在页面中调用的大小写要保持一致,免得缓存了不同的文件,页面的js可以的话,写成单位的文件进行调用 。图片少用jpeg,使用gzip 对网页进行         压缩. 加快页面展示速度。   
18.  把调用js,尽量写在页面底部, 还有viewstate 状态也可以重写到页面低部, 也可以把viewstate进行压缩。
条件是viewstate必要要用的情况之下。
适当使用一些优化技巧,有助于程序运行速度,软硬件合适配置,对于一个开发者来说也是一项深远的工程。

转载于:https://www.cnblogs.com/csj007523/archive/2010/04/09/1708448.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

金三银四的腾讯、阿里、​字节等大厂前端社招面经

大家好&#xff0c;我是若川。最近金三银四&#xff0c;今天分享一篇腾讯、阿里、字节等大厂的前端社招面试经验的好文&#xff0c;相信看完会有所收获。也欢迎点击下方卡片关注或者星标我的公众号若川视野作者面了将近一个月&#xff0c;目前还没挂过&#xff0c;但由于各种因…

JS中创建函数的几种方式

使用 "函数声明" 创建函数 语法&#xff1a;* function 函数名([形参1,形参2...形参N]){* 语句...* } */function fun2(){console.log("这是我的第二个函数~~~");alert("哈哈哈哈哈");document.write("~~~~…

ssm提交post_我用spring mvc做,用post方式提交,后台获取不到参数值,用get方式就可以,什么问题...

展开全部因为form表单e68a843231313335323631343130323136353331333365646330的enctype编码方式不同导致的&#xff1b;enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。默认地&#xff0c;表单数据会编码为 "application/x-www-form-urlencoded"。就…

网页设计简约_简约网页设计的主要功能

网页设计简约重点 (Top highlight)Minimalism is synonymous with simplicity. Not quite. As the name suggests, minimalism is definitely not about opulent design. But the assumption that minimalism is design-less and plain is also wrong. Minimalism is simple ye…

MySQL_数据库数据类型(data type)介绍

转载链接&#xff1a;http://www.360sdn.com/mysql/2013/0511/78.html MySQL_数据库数据类型(data type)介绍 mysql数据库的数据类型(data type)分以下几种:数值类型,字符串类型 一、数值类型 MySQL 的数值类型可以大致划分为两个类别&#xff0c;一个是整数&#xff0c;另一…

Expo 2010 Japan Pavilion

^_^转载于:https://www.cnblogs.com/mmmhhhlll/archive/2010/04/16/1713680.html

深度对比学习Vue和React两大框架

作为国内应用最广的两个框架&#xff0c;Vue 和 React 是前端必须掌握的内容&#xff0c;也是面试的重点。但大多数读者都只擅长其中一个框架&#xff0c;当面试涉及到另一个框架的内容时&#xff0c;就答不好了。比如虚拟dom&#xff0c;两个框架中都有应用&#xff0c;面试官…

PHP Token(令牌)设计

转载链接&#xff1a;http://www.jb51.net/article/13756.htm PHP Token(令牌)设计 设计目标: 避免重复提交数据. 检查来路,是否是外部提交 匹配要执行的动作(如果有多个逻辑在同一个页面实现,比如新增,删除,修改放到一个PHP文件里操作) 这里所说的token是在页面显示的时候,写到…

java rwd_面向任务的设计-不仅限于Mobile First和RWD

java rwdWe already know that majority of solutions should start with a design for smartphones, we know that all websites should be responsive. Now, it’s time to think about holistic solutions with specific tasks adapted to all kind of devices.我们已经知道…

python中关键字 表示空类型_python中什么表示空类型

python中什么表示空类型&#xff1f;python中None表示空类型。表示该值是一个空对象&#xff0c;空值是Python里一个特殊的值&#xff0c;用None表示。None不能理解为0&#xff0c;因为0是有意义的&#xff0c;而None是一个特殊的空值。可以将None赋值给任何变量&#xff0c;也…

HOJ 1015 Nearly prime numbers

代码 //Nearly prime number is an integer positive number for which it is possible //to find such primes P1 and P2 that given number is equal to P1*P2.#include <stdio.h>#include <stdlib.h>#include <math.h>//decide n whither is a nearly pri…

「前端工程化」该怎么理解?

大家好&#xff0c;我是若川。今天分享一篇「前端工程化」的好文。非广告&#xff0c;请放心阅读。可点击下方卡片关注我&#xff0c;或者查看系列文章。今天发文比较晚&#xff0c;以往都是定时早上7:30发文&#xff0c;也不知道是不是有点早。一.什么是前端工程&#xff1f;一…

axure文本框值相加_Axure教程:计数文本域实现

原标题&#xff1a;Axure教程&#xff1a;计数文本域实现制定UI规范时&#xff0c;遇到实现“限制字数的文本域”的交互问题&#xff0c;即当用户输入的字数长度超过限制要求&#xff0c;如何只保留规定长度的文本&#xff1f;效果如下&#xff1a;我们知道【Number】类型的文本…

figma下载_Figma和ProtoPie中的原型制作,比较

figma下载第1部分 (Part 1) Prototyping has never had such a high profile with a whole host of tools that now give you varying ability to realize your designs beyond their static UI and into a working usable thing. It’s fair to say that prototyping within t…

拗口翻译

I find many times people use temporary tables because they learned in other databases that joining too many tables in a single query is a ʹbad thingʹ. This is a practice that must be unlearned for Oracle development. Rather then trying to out‐smart the …

javascript 手机手势动作touch触屏原理分析

转载链接&#xff1a;http://www.lvtao.net/web/220.html $(function(){document.getElementById("moveId").addEventListener(touchstart, touchStart);document.getElementById("moveId").addEventListener(touchmove, touchMove);document.getElementBy…

并发工具类(四)线程间的交换数据 Exchanger

前言JDK中为了处理线程之间的同步问题&#xff0c;除了提供锁机制之外&#xff0c;还提供了几个非常有用的并发工具类&#xff1a;CountDownLatch、CyclicBarrier、Semphore、Exchanger、Phaser&#xff1b;  CountDownLatch、CyclicBarrier、Semphore、Phaser 这四个工具类提…

「前端组件化」该怎么理解?

大家好&#xff0c;我是若川。今天分享一篇关于「前端组件化」的好文。欢迎点击下方卡片关注我。以下是正文~这里我们一起来学习前端组件化的知识&#xff0c;而组件化在前端架构里面是最重要的一个部分。讲到前端架构&#xff0c;其实前端架构中最热门的就有两个话题&#xff…

大屏设计的视觉统一_视觉设计中的统一

大屏设计的视觉统一视觉设计的统一性是什么&#xff1f; (What is unity in visual design?) The concept of unity in visual design means a group of elements working together to create a greater whole. It means, as the clich goes: A whole that is greater than th…

l2范数求导_机器学习中的范数规则化之(一)L0、L1与L2范数

source: https://blog.csdn.net/zouxy09/article/details/24971995zouxy09qq.comhttp://blog.csdn.net/zouxy09今天我们聊聊机器学习中出现的非常频繁的问题&#xff1a;过拟合与规则化。我们先简单的来理解下常用的L0、L1、L2和核范数规则化。最后聊下规则化项参数的选择问题。…