以下是引用natsunosakur在2007-8-2 13:37:30的发言:
但是我觉得缓存并不是处处都能用的
尤其是能够页面缓存的地方尤其不多。
目前只把配置写入缓存里面 还有统计页面使用页面缓存
C#比C++和JAVA慢是不用争的了,不过现在机子配置都比以前好多了,也无所谓了,要不然微软也不会把.NET的框架做的那么大了
至于缓存,我专门花时间听过微软的讲座,缓存是处处可用的,我明白你说的并不是处处都能用的意思,你是说与数据库建立动态的地方是吧,最好的方法是"库缓存"
asp.net提供三种主要形式的缓存:页面级输出缓存、用户控件级输出缓存(或称为片段缓存)和缓存api。输出缓存和片段缓存的优点是非常易于实现,在大多数情况下,使用这两种缓存就足够了。而缓存api则提供了额外的灵活性(实际上是相当大的灵活性),可用于在应用程序的每一层利用缓存。
页面级输出缓存
作为最简单的缓存形式,输出缓存只是在内存中保留为响应请求而发送的HTML的副本。其后再有请求时将提供缓存的输出,直到缓存到期,这样,性能有可能得到很大的提高(取决于需要多少开销来创建原始页面输出-发送缓存的输出总是很快,并且比较稳定)。
实现
要实现页面输出缓存,只要将一条OutputCache指令添加到页面即可。
<%@ OutputCache Duration="60" VaryByParam="*" %>
片段缓存,用户控件输出缓存
缓存整个页面通常并不可行,因为页面的某些部分是针对用户定制的。不过,页面的其他部分是整个应用程序共有的。这些部分最适合使用片段缓存和用户控件进行缓存。此外,菜单和其他布局元素,尤其是那些从数据源动态生成的元素,也可以用这种方法进行缓存。
如果需要,可以按以下条件选择需要缓存的控件:
(1)某控件的属性已改变
(2)由页面级输出缓存所支持的任何一种页面或控件状态改变
一旦对某些控件进行了缓存,使用它们的几百个页面就可以共享这些控件,而不再需要为每个页面保留单独的控件缓存版本。
缓存API,使用Cache对象
页面级和用户控件级输出缓存的确是一种可以迅速而简便地提高站点性能的方法,但是在ASP.NET中,缓存的真正灵活性和强大功能是通过Cache对象提供的。使用Cache对象,您可以存储任何可序列化的数据对象,基于一个或多个依赖项的组合来控制缓存条目到期的方式。这些依赖项可以包括自从某对象被缓存后经过的时间、自从某对象上次被访问后经过的时间、对文件或文件夹的更改以及对其他缓存对象的更改,在略作处理后还可以包括对数据库中特定表的更改。
在Cache中存储数据
在Cache中存储数据的最简单的方法就是使用一个键为其赋值,就像HashTable或Dictionary对象一样:
Cache["key"] = "value";
这种做法将在缓存中存储项,同时不带任何依赖项,因此它不会到期,除非缓存引擎为了给其他缓存数据提供空间而将其删除。要包括特定的缓存依赖项,可使用Add()或Insert()方法。其中每个方法都有几个重载。Add()和Insert()之间的唯一区别是,Add()返回对已缓存对象的引用,而Insert()没有返回值(在C#中为空,在VB中为Sub)。
示例
Cache.Insert("key", myXMLFileData, new
System.Web.Caching.CacheDependency(Server.MapPath("users.xml")));