仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1119|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET编程:ASP.NET 2.0的缓存手艺简介

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:39:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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是公开了。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-18 09:57:55 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
乐观 该用户已被删除
板凳
发表于 2015-1-21 18:13:44 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
深爱那片海 该用户已被删除
地板
发表于 2015-1-30 21:42:32 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
不帅 该用户已被删除
5#
发表于 2015-2-6 16:09:05 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
活着的死人 该用户已被删除
6#
发表于 2015-2-17 02:00:19 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
简单生活 该用户已被删除
7#
发表于 2015-3-5 14:51:37 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
精灵巫婆 该用户已被删除
8#
发表于 2015-3-12 08:19:37 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-7 09:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表