未完待续

To Be Continued

Month: 六月, 2008

ASP程序的性能优化

对于网络应用程序来说,性能是每个开发人员都应该关心的问题。性能的优劣直接影响网站能够正常运行,在网站访问量很大的时,如果网应用程序的性能欠佳,就会导致用户访问超时或者打不开页面,更严重时还会让整个服务器崩溃。本讲介绍一些关于优化ASP程序性能的基本知识。 本讲要点: *ASP程序的代码优化 *数据库优化 *网页优化 1 ASP程序的代码优化 在使用代码编写应用程序的过程中,同一个功能可以使用不同的函数、不同的语法实现。但是不同的代码页会造成程序运行的效率不同,代码优化就是找到并消灭那些影响程序运行速度的代码。 1.1尽量减少对Session对象和Application对象的使用 虽然Session对象和Application对象对ASP变成具有很重要的作用,但是由于大量使用这两个对象会增加系统内存的开销,因此如果不合理地使用Session对象和Application对象就会降低系统的性能。 没有固定的模式规定什么数据应该使用Session对象存储,什么数据应该使用Application对象存储,存储数据的对象要根据实际情况确定。通常情况下,Session对象中的数据是每个用户使用的状态信息,如用户名。Application对象中的数据是所有用户的公共信息,只有所有用户都经常访问的信息才会存储到Application对象中,如数据库的连接。 1.2 及时关闭不使用的对象 不仅是ASP程序,所有应用程序都应该及时关闭不使用的对象。如果不及时关闭没有使用的对象,大量的对象就会长时间占用系统资源,导致系统运行缓慢。只有及时关闭不使用的对象才能回收系统分配出去的资源,提高系统的性能。 使用Session对象时,如果用户30 min(分钟)内没有任何操作,系统就会自动触发Session_OnEnd事件关闭Session对象。但是假如有大量的用户频繁的读取服务器,服务器在这段时间内仍然会保持那些已经没有用的Session对象。大量的Session对象会增加系统内存的开销,如果不及时关闭使用完的Session对象,就会降低系统的性能。 另外连接数据库也是一项非常耗费系统资源的工作。对于数据库的操作最佳方案是,尽量在一次数据库连接中处理所有的操作。使用完的Recordset对象要马上赋Nothing值,将不用的数据库连接立即关闭。 1.3合理使用Include文件 在ASP文件中,可以使用语句形式包含其它的文件。这些Include文件也是ASP程序,它把自己的公共函数放到包含它的文件中,供包含它的文件调用。 因为服务器端应用程序会对文件进行预编译,所以建议不要在一个文件中包含过多的Include文件。如果一个文件包含上百个Include文件,但它只使用其中的一个或几个函数,就会造成大量的函数被加载而未被使用,浪费系统的资源。 因此在一个文件中尽可能只放入相同类型的Include文件,这样既有利于函数的查找,又可以减小Include文件的大小。 1.4尽量使用系统函数代替自己编写的函数 想要实现一个功能时,不要急于编写代码,应该先看看开发平台是否又现成的函数能够实现想要的功能。如果有可以使用的函数,不仅免去了开发的烦恼,节省了开发时间。更重要的是,在大多数的情况下系统提供的函数比自己编写的函数性能好。 例如,使用VBScript脚本语言,分割一个有规律的字符串(“ggg,sss,aaa,bbb,mmm”),如果使用自己编写的函数既浪费时间,运行速度又慢。而使用系统提供的分割字符串函数split可以直接完成这个功能。 1.5减少动态数组的使用 如果读者学习过数据结构,一定会知道在动态数组中查找一个元素(即取动态数组中一个元素的值)要比在静态数组中慢。虽然在某些情况下动态数组是必不可少的,例如,对于数组存储的数据条数不确定的情况下,或是对数组中的元素访问量不是很大时,应该使用动态数组。但是对于存储的数据条数相对稳定,或时经常访问数组中的元素时,还是应该使用静态数组。 1.6养成提前声明变量的习惯 在脚本语言中,允许不声明变量而直接使用它。虽然这样编写代码会很方便,但是这是一种不好的习惯。在应用程序使用变量时,解释器会对变量进行处理。如果提前声明变量,会加快解释器执行的解释时间。如果变量不提前声明,不仅使程序代码难以阅读,还会使程序的执行效率大大降低。 如果读者还没有养成提前声明变量的习惯,建议在每一个ASP文件的开头加上”Option Explicit”语句。它可以在当前的文件中,强制要求显示声明代码中的所有变量,如果存在没有声明的变量,它就会报错。 1.7减少Response.writ的使用 下面的量个实例完成了相同的页面输出功能,但是通过运行可以知道第一个实例比第二个实例的速度要快。这是因为第二个实例在执行时增加了服务器的解释时间,因此降低了它的性能。 实例一: <% Dim ok if ok=1then %>Hello World! <%end if%> 实例二: <% Response.write “” Response.write “” Dim ok If ok =1 then Response.write [...]

电脑扼杀了时间,还是扼杀了我们

越来越觉得自己的大多数时间都耗费在了电脑上了,早上起床,第一件事情便是打开电脑。然后才是洗漱,有东西吃的话便是一边上网一边吃所谓的早餐,没有的话早饭也就不了了之。想要做东西,在电脑前忙乎了半天发现什么都还没开始,不是开播放器放音乐便是上网看新闻。如果没有网络,手头要做的东西便无从下手,没灵感没创意,没知识没技术,都需要去网上盗取。我有时候特别这么觉得,自己是个贼,偷窃着网络上别人的无形资产,在每次沾沾自喜后或多或少也有点惭愧。然而直到睡觉前洗澡,也不舍得把电脑关掉。非要等澡洗好了之后,爬上床之前,才肯合上笔记本依依不舍的爬上床去。第二天又重复着前一天的事情。 这几天我一直在想这么一个问题:”电脑扼杀了时间,还是扼杀了我们?“。因为有了电脑,我的时间大部分都在它上面,除了上课以及睡觉,几乎都是坐在电脑前,要不发呆,要不看看电影;有时候会装模作样的一边听着音乐,一边拿着书在那里看,半天过去了仍旧没翻过几页。很怀念高中之前的日子,自己能够安静的看一天的书,能够研究一个晚上的数学题目,可是现在不行了。自己根本无法离开电脑,文档需要用电脑处理,作业需要用电脑做,与朋友联系也得通过电脑。而手机只是人没在电脑前时的替代品。夜深了,仍旧不肯睡,并不是因为有什么功课非得熬夜,仅仅是在折腾电脑而已,或者说是电脑在折腾我。 无可否认电脑有时候为我们节省了很多时间,但是我及我的一些朋友们同时也将节省出来的时间花费在了电脑上。而且是心甘情愿的花在它上面,用它游戏或者电影。某天觉悟到在自己浪费了时间的时候,简单的安慰自己明天要努力功课……到第二天这些便又抛之脑后,继续变本加厉。 电脑不仅让我及我的一些朋友们浪费了大量的时间在它的上面,同时它也扼杀了我们。扼杀了我们的智慧,扼杀了我们的想象力。因为有它,我们便不愿再自己动脑想,任何事物便是GOOGLE之(或者百度之)。我感觉自己在变笨,也许是太聪明了,看到了以前笨的自己。 也许电脑并没过错,而这一切都只是我们懒惰造成的结果。可以克制自己使用电脑的时间、内容及频率,这是我迫切需要做到的。