# .Net Cache

Cache.Add(key,value):Add方法重复键值是不会在增加的
Cache.Insert(key,value):Insert数据是会覆盖重复的键值

# 输出缓存

这是最简单的缓存类型,它保存发送到客户端的页面副本,当下一个客户端发送相同的页面请求时,此页面不会重新生成(在缓存有限期内),而是从缓存中获取该页面;当然由于缓存过期或被回收,这时页面会重新生成。
输出缓存

 <%@ OutputCache Duration="23" VaryByParam="None" %>

我们可以在web.config文件中定义一个outputCacheProfile(ProductCacheProfile)

<caching>
  <!-- Sets out put cache profile-->
  <outputCacheSettings>
	<outputCacheProfiles>
	  <add name="ProductCacheProfile" duration="30"/>
	</outputCacheProfiles>
  </outputCacheSettings>
</caching>

然后在页面中添加CacheProfile属性并且赋值为ProductCacheProfile

<%@ OutputCache CacheProfile="ProductCacheProfile" VaryByParam="None" %>

# 客户端缓存

如果用户在浏览器中点击“后退”按钮或在地址栏中重新输入URL,那么在这种情况下,浏览器将从缓存获取页面;然而,如果用户点击“刷新”按钮,那么浏览器中缓存将失效,浏览器发送页面请求。

<%@ OutputCache Duration="23" VaryByParam="None" Location="Client" %>

# 查询缓存

如果查询参数和前一个请求相同并且该页面缓存有效,那么缓存将被重用,否则,创建一个新的页面缓存。
前面我们把VaryByParam设置为“*”,所以ASP.NET程序对ProductName和ProductId都创建页面缓存
如果我们只针对ProductName创建页面缓存,这时我们可以修改VaryByParam,具体如下所示:

<%@ OutputCache Duration="30" VaryByParam="productname" %>