楼主
大 中
小 发表于 2007-6-22 04:55 只看该作者
ASP.NET 2.0的缓存技术简介
[[wiki]wiki[/wiki]][/wiki]由[wiki]数据库[/wiki]驱动的Web应用[wiki]程序[/wiki],如果需要改善其性能,最好的方法是使用缓存功能。用户从数据库中检索数据,可能是Web应用程序中执行最慢的操作之一。因为其中涉及多个环节,例如,Web[wiki]服务器[/wiki]、数据库服务器等。尤其是在用户比较多,检索礫wiki]氖[/wiki]萘勘冉洗蟮那榭鱿拢岣ㄓ没г谀诘母鞲龇矫嬖斐刹恍〉睦选H绻芄唤菘庵械氖莼捍娴侥诖妫ㄒ部梢源娲⒃谄渌∷蛭扌柙谇肭竺扛鲆趁媸倍挤梦适菘狻S捎诖幽诖嬷蟹祷厥莸腫wiki]速度[/wiki]始终比新提供的数据速度快,因而可以大大提供应用程序的性能。
缓存有一个不太容易克服的缺点,那就是数据过期的问题。最典型的情况是,如果将数据库表中的数据内容缓存到服务器内存中,当数据库表中的记录发生更改时,Web应用程序则很可能显示过期的、不准确的数据。对于某些[wiki]类[/wiki]型的数据,即使显示的[wiki]信息[/wiki]过期,影响也不会很大。然而,对于实时性要求比较严格的数据,例如,股票价格、拍卖出价之类信息,显示的数据稍有过期都是不可接受的。
为了解决以上问题,ASP.NET 1.x中曾经提供了一些比较好的缓存功能,例如,页面输出缓存、部分缓存、页面数据缓存等。虽然这些缓存功能可以解决数据缓存方面的问题,但还是存在较大的缺点,开发人员必须在性能和数据过期之间作出权衡,数据过期的问题始终困扰着开发人员。例如,如果数据库表中的数据发生了变化,缓存则也许不能在指定的[wiki]时间[/wiki]内更新,而必须等到缓存过期,那么就覽wiki]锌[/wiki]赡芪没Т匆欢ǖ穆榉场@硐氲那榭鍪牵菘獗碇械娜魏[wiki]胃[/wiki]拢寄芄涣⒖烫逑衷诨捍媸葜校珹SP.NET 2.0克服了以上不足,解决了这个问题。ASP.NET 2.0的缓存功能是在ASP.NET 1.x基础之上扩展而来的。
ASP.NET 2.0支持以下几种缓存
·页面输出缓存
页面输出缓存是最为简单的缓存机制,该机制将整个ASP.NET页面内容保存在服务器内存中。当用户请求该页面时,[wiki]系统[/wiki]从内存中输出相关数据,直到缓存数据过期。在这个过程中,缓存内容直接发送给用户,而不必再次经过页面处理[wiki]生命[/wiki][wiki]周期[/wiki]。通常情况下,页面输出缓存对于那些包含不需要经常修改内容的,但需要大量处理才能编译完成的页面特别有用。需要读者注意的是,页面输出缓存是将页面全部内容都保存在内存中,并用于完成客户端请求。
·页面部分缓存
顾名思义,页面部分缓存是将页面部分内容保存在内存中以便响应用户请求,而页面其他部分内容则为动态内容。页面部分缓存的实现包括两种方式:控件缓存和替换后缓存。前者也可称为片段缓存,这种方式允许将需要缓存的信息包含在一个用户控件内,然后,将该用户控件标记为可缓存的,以此来缓存页面输出的部分内容。这一方式缓存了页面中的特定内容,而没有缓存整个页面,因此,每次都需重新创建整个页。例如,如果要创建一个显示大量动态内容(如股票信息)的页,其中有些部分为静态内容(如每周总结),这时可以将静态部分放在用户控件中,并允许缓存这些内容。缓存后替换与控件缓存正好相反。这种方式缓存整个页,但页中的各段都是动态的。例如,如果要创建一个在规定时间段内为静态的页,则可以将整个页设置为进行缓存。如果向页添加一个显示用户名的Label控件,则对于每次页刷新和每个用户而言,Label的内容都将保持不变,始终显示缓存该页之前请求该页的用户的姓名。使用缓存后替换机制,可以将页配置为进行缓存,将页的个别部分标记为不可缓存。在此情况下,可以向不可缓存部分添加Label控件,这样将为每个用户和每次页请求动态创建这些控件。
·应用程序数据缓存
应用程序数据缓存提供了一种[wiki]编程[/wiki]方式,可通过键/值对将任意数据存储在内存中。使用应用程序缓存与使用应用程序状态类似。但是,与应用程序状态不同的是,应用程序数据缓存中的数据是易失的,即数据并不是在整个应用程序生命周期中都存储在内存中。应用程序数据缓存的优点是由ASP.NET[wiki]管理[/wiki]缓存,它会在项过期、无效,或内存不足时移除缓存中的项,还可以配置应用程序缓存,以便在移除蟍wiki]钍[/wiki]蓖ㄖτ贸绦颉
人生有无数个故事,故事中的主角也在不断的变化,但是有个故事被叫做了生活,这个故事的女主角会陪伴你一生.......
|