日期:2014-05-17  浏览次数:20408 次

asp.net C#中关于服务器缓存和客户端缓存问题
ASP.NET c#问题,
  怎样理解服务器缓存和客户端缓存?
   在什么样的情况用服务器缓存和客户端缓存?
   服务器缓存和客户端缓存又具体应怎样写?

------解决方案--------------------
sf
------解决方案--------------------
http://blog.csdn.net/octverve/archive/2008/01/31/2075402.aspx
------解决方案--------------------
http://blog.csdn.net/xiaoxiaohai123/archive/2008/04/24/2324128.aspx
------解决方案--------------------
服务器缓存是把数据放在服务器的内存中,客户端缓存则是把数据保存在浏览器里。

服务器上某一页面访问量较大,且是经常变动的话,用服务器缓存比较合适,这样访止同一时间造上数据库连接次数过多的情况。

如果服务器上某一页面访问量较大,但是内容一直不变,或者非常长时间才变动的话,可以用客户端缓存,也可以用服务器端缓存。

服务器缓存不要滥用,要根据具体情况来使用,不然不但起不到提高效率的作用,反而比不使用缓存更糟糕。
客户端缓存滥用会导致用户长时间浏览的一直是固定不变的页面

具体的用法
服务器端:
ASP.NET 有三种可由 Web 应用程序使用的缓存:
1.输出缓存:缓存请求所生成的动态响应.
2.片断缓存:缓存请求所生成的相应的各部分.
3.数据缓存:以编程方式混存任意对象.

输出缓存:(缓存绝对过期)
通过缓存从动态页生成的内容来提高请求/响应的吞吐量.默认情况下启用输出缓存,
但不缓存来自任何响应的输出,除非采取显式操作使该响应成为可缓存的.
若要使相应满足输出缓存的条件,它必须具有有效的过期/有效性策略和公共的缓存可
见性.启用输出缓存后,当发出对页的第一个GET请求时创建一个输出缓存项。随后的GET或
HEAD请求由该输出缓存项服务,直到该缓存请求过期。
下面的指令在响应时激活输出缓存:
<%@ OutputCache Duration="60" VaryByParam="none"%>

页片断缓存:(单独缓存)
<%@ OutputCache Duration="120" VaryByParam="id1;id2"%>
VaryByParam属性功能非常强大,允许用户控件作者指示asp.net在服务器上缓存/存储
输出缓存区域的多个实例。
片断缓存还支持VaryByControl属性。VaryByParam属性基于使用POST或GET发送的名称
/值对改变缓存结果,而VaryByControl属性则通过用户控件中的控件改变缓存片断。

页数据缓存:
把数据项放入缓存:
Cache["mykey"]=myValue;
从缓存中检索数据:
myValue=Cache["mykey"];
if(myCache !=null)
{
DisplayData(myValue);
}


客户端缓存:

<%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="browser" %>
------解决方案--------------------
http://msdn.microsoft.com/zh-cn/library/ms178597(VS.80).aspx
这个讲的比较全.
------解决方案--------------------
另外服务器缓存是针对多用户同时请求同一页面或数据的情况

客户端缓存是针对同一用户多次访问相同页面或数据的情况。

活用缓存可以对网站的访问速度有很大的提升,尤其是访问量大的时候
------解决方案--------------------
楼上很强大。
------解决方案--------------------
学习
------解决方案--------------------
缓存的用法总结:
1.要提高性能,应该首先想到缓存 
2.尽早缓存;经常缓存 
3.向数据层、业务逻辑层、UI层添加缓存 

从基础开始吧

页面缓存
缓存指令
<%@ outputcache duration="60" varybyparam=“none" %>
duration(必须)
当前页面缓存60秒
varybyparam(必须)
get串对应的字段,缓存输出的结果因查询字符串而异
CacheProfile
根据配置文件关联缓存
SqlCacheDependency
数据表关联缓存  


根据配置文件缓存
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="AppCache1" enabled="true" duration="60"/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>

<%@ OutputCache CacheProfile="AppCache1" VaryByParam="none" %> 

片段缓存
在用户控件的页面上输入指令
<%@ OutputCache Duration="120" VaryByParam="None" %> 

<%@ OutputCache Duration="30" VaryByControl="Button1" %>


Substitution
<%@ outputcache Duration="60" VaryByParam="none" %>
<%=DateTime.Now.ToString() %>

<asp:Substitution ID="Substitution1" MethodName="GetDate" runat="server" />