|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
学习asp.net两个月有余了,除了对html、web控件比较熟悉(应该是说都能理解和接受)之外,竟不知道自己还会什么。看了两本书:《精通asp.net网络编程》(人民邮电出版社)、《asp.net实用案例教程》(清华大学出版社)。asp.net|缓存 由数据库驱动的Web使用程序,假如必要改良其功能,最好的办法是利用缓存功效。用户从数据库中检索数据,多是Web使用程序中实行最慢的操纵之一。由于个中触及多个环节,比方,Web服务器、数据库服务器等。特别是在用户对照多,检索的数据量对照年夜的情形下,会给包含用户在内的各个方面形成不小的坚苦。假如可以将数据库中的数据缓存到内存(也能够存储在其他场合),则无需在哀求每一个页面时都会见数据库。因为从内存中前往数据的速率一直比新供应的数据速率快,因此能够年夜年夜供应使用程序的功能。
缓存有一个不太简单克制的弱点,那就是数据过时的成绩。最典范的情形是,假如将数据库表中的数据内容缓存到服务器内存中,当数据库表中的纪录产生变动时,Web使用程序则极可能显现过时的、禁绝确的数据。关于某些范例的数据,即便显现的信息过时,影响也不会很年夜。但是,关于及时性请求对照严厉的数据,比方,股票代价、拍卖出价之类信息,显现的数据稍有过时都是不成承受的。
为懂得决以上成绩,ASP.NET1.x中已经供应了一些对照好的缓存功效,比方,页面输入缓存、部分缓存、页面数据缓存等。固然这些缓存功效能够办理数据缓存方面的成绩,但仍是存在较年夜的弱点,开辟职员必需在功能和数据过时之间作出衡量,数据过时的成绩一直困扰着开辟职员。比方,假如数据库表中的数据产生了变更,缓存则大概不克不及在指定的工夫内更新,而必需比及缓存过时,那末就有大概为用户带来必定的贫苦。幻想的情形是,数据库表中的任何更新,都可以立即表现在缓存数据中,ASP.NET2.0克制了以上不敷,办理了这个成绩。ASP.NET2.0的缓存功效是在ASP.NET1.x基本之上扩大而来的。
ASP.NET2.0撑持以下几种缓存
・页面输入缓存
页面输入缓存是最为复杂的缓存机制,该机制将全部ASP.NET页面内容保留在服务器内存中。当用户哀求该页面时,体系从内存中输入相干数据,直到缓存数据过时。在这个过程当中,缓存内容间接发送给用户,而不用再次经由页面处置性命周期。一般情形下,页面输入缓存关于那些包括不必要常常修正内容的,但必要大批处置才干编译完成的页面出格有效。必要读者注重的是,页面输入缓存是将页面全体内容都保留在内存中,并用于完成客户端哀求。
・页脸部分缓存
望文生义,页脸部分缓存是将页脸部份内容保留在内存中以便呼应用户哀求,而页面其他部份内容则为静态内容。页脸部分缓存的完成包含两种体例:控件缓存和交换后缓存。前者也可称为片断缓存,这类体例同意将必要缓存的信息包括在一个用户控件内,然后,将该用户控件标志为可缓存的,以此来缓存页面输入的部份内容。这一体例缓存了页面中的特定内容,而没有缓存全部页面,因而,每次都需从头创立全部页。比方,假如要创立一个显现大批静态内容(如股票信息)的页,个中有些部分为静态内容(如每周总结),这时候能够将静态部分放在用户控件中,并同意缓存这些内容。缓存后交换与控件缓存恰好相反。这类体例缓存全部页,但页中的各段都是静态的。比方,假如要创立一个在划定工夫段内为静态的页,则能够将全部页设置为举行缓存。假如向页增加一个显现用户名的Label控件,则关于每次页革新和每一个用户而言,Label的内容都将坚持稳定,一直显现缓存该页之前哀求该页的用户的姓名。利用缓存后交换机制,能够将页设置为举行缓存,将页的一般部分标志为不成缓存。在此情形下,能够向不成缓存部分增加Label控件,如许将为每一个用户和每次页哀求静态创立这些控件。
・使用程序数据缓存
使用程序数据缓存供应了一种编程体例,可经由过程键/值对将恣意数据存储在内存中。利用使用程序缓存与利用使用程序形态相似。可是,与使用程序形态分歧的是,使用程序数据缓存中的数据是易掉的,即数据并非在全部使用程序性命周期中都存储在内存中。使用程序数据缓存的长处是由ASP.NET办理缓存,它会在项过时、有效,或内存不敷时移除缓存中的项,还能够设置使用程序缓存,以便在移除项时关照使用程序。
・缓存依附
ASP.NET1.x已供应了一些基于工夫、文件、目次等缓存依附功效。这些功效固然可以处置一些罕见成绩,可是没法办理数据过时的困难。为此,ASP.NET2.0新增了SQL数据缓存依附功效。该功效的中心是SqlCacheDependency类。分歧版本的SQLServer,其关于SQL数据缓存依附具有分歧水平的撑持,因而,利用办法差别较年夜。别的,ASP.NET2.0还撑持以CacheDependency类为中心的自界说缓存依附,和以AggregateCacheDependency类为中心的聚合缓存依附等。
ASP.NET2.0包含了一些有助于举行缓存设置的新功效。比方,同意利用Web.config文件来创立缓存设置。在Web.config文件中举行得当设置,并在单个页中援用这些设置后,就可以够将缓存设置同时使用于多个页面。同时,缓存设置还增加了更多用于自界说缓存功能的选项。
以上复杂先容了ASP.NET2.0供应的缓存功效,它们可以进步哀求呼应的吞吐量以便进步使用程序功能。实践上,这些缓存功效有的承继自ASP.NET1.x,而且失掉了加强,有的则是新增功效。加强功效包含功效更壮大的页脸部分缓存模子、加强的缓存设置和输入缓存指令的改善。新功效包含Web.config缓存设置撑持、自界说缓存依附、聚合缓存依附、SQL数据缓存依附和缓存后交换等。
在正式入手下手先容以上各个缓存功效之前,另有两个观点必要懂得。一个是缓存扫除,另外一个是缓存过时。
缓存扫除是指从内存中移除缓存数据。大概由以下3个缘故原由形成:一是缓存项数据过时。每一个过时的缓存项数据都必需被删除,不然招致服务器内存不敷,影响其他使用程序实行。二是缓存依附项产生改动。依附项与数据缓存项有着亲切干系。依据使用程序设置,假如依附项产生改动,那末数据缓存极可能会被扫除。三是因为服务器内存不敷,入手下手缓存清算历程。假如某些项在一段工夫内未被会见,或是在增加到缓存中时被标志为低优先级,则这些项会被移除。
以上先容了缓存扫除的观点和构成缘故原由,个中触及一个数据过时的成绩。在ASP.NET2.0中,当向缓存增加项时,能够设置两种数据过时范例。一种称为可调过时,即指定某项自前次被会见后多长工夫过时。比方,能够将某项设置为自前次在缓存中被会见后20分钟过时。另外一种是相对过时,即指定某项在设定的工夫过时,而不思索会见频次。比方,能够将某项设置为鄙人午6点过时,或4小时后过时。
ASP.NET2.0的缓存功效具有以下长处:
・撑持更加普遍和天真的可开辟特性
ASP.NET2.0包括一些新增的缓存控件和API。比方,自界说缓存依附、Substitution控件、页面输入缓存API等,这些特性可以分明改良开辟职员关于缓存功效的把持。
・加强的可办理性
利用ASP.NET2.0供应的设置和办理功效,能够加倍轻松地办理缓存功效。
・供应更高的功能和可伸缩性
ASP.NET2.0供应了一些新的功效,比方,SQL数据缓存依附等,这些功效将匡助开辟职员创立高功能、伸缩性强的Web使用程序。
别的,缓存功效也有其本身的不敷。比方,显现的内容大概不是最新、最正确的,为此,必需设置符合的缓存战略。又如,缓存增添了体系的庞大性并使其难于测试和调试,因而倡议在没有缓存的情形下开辟和测试使用程序,然后在功能优化阶段启用缓存选项。简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。 |
|