快速业务通道

ASP.NET 2.0(C#)(4) - Cache&SqlCacheDependency(缓存和SqlCacheDependency特

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-19

ASP.NET 2.0(C#)(4) - Cache&SqlCacheDependency(缓存和SqlCacheDependency特性)

介绍

存是在计算中广泛使用的一种技术,通过将经常访问的数据或存取开销较大的数据保留在内存或硬盘中来提高性能。在 Web 应用程序的上下文中,缓存用于在 HTTP 请求之间保留页或数据,在重用它们时可以不必耗费资源重新创建。

关键

1、@OutputCache指令中的属性:

Duration - 缓存时间(秒)

VaryByParam - 根据使用 POST 或 GET 发送的名称/值对来改变缓存的结果(多参数用分号隔开)

VaryByControl - 根据用户控件中的控件来改变缓存的片段(值是控件ID,多控件用分号隔开)

CacheProfile - 调用配置文件中设置的缓存时间

2、增加数据缓存时用Cache.Insert,可以指定缓存时间

3、替换缓存(Substitution)- 回调函数要是静态的

4、SqlCacheDependency

配置文件中的配置

 <system.web>
  <caching>
   <sqlCacheDependency enabled="true" pollTime="轮询时间(毫秒)">
    <databases>
     <add name="名字" connectionStringName="连接字符串的名字" />
    </databases>
   </sqlCacheDependency>
   <!-- 如果是SqlServer2005的话,则只需如下设置,因为SqlServer支持基于通知的缓存失效
   <sqlCacheDependency enabled="true" />
   -->
  </caching>
 </system.web>

如果不是SqlServer2005的话,应该使用aspnet_regsql注册一下

aspnet_regsql.exe -S "server" -E -d "database" -ed
aspnet_regsql.exe -S "server" -E -d "database" -et -t "table"

如果是Sql验证的话要把-E换成,-U(用户名),-P(密码)

示例

页面输出缓存

Cahce/Page.aspx

<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Page.aspx.cs"
  Inherits="Cahce_Page" Title="页面输出缓存" %>
  
<%@ OutputCache Duration="10" VaryByParam="none" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
  <p>
    Duration="10" VaryByParam="none"
  </p>
  <p>
    <%=DateTime.Now %>
  </p>
</asp:Content>

API操作缓存

Cahce/Page.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
  
public partial class Cahce_Page : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    /**//* 通过API设置缓存 不常用啊
    
    // 相当于@OutputCache指令中的Duration属性
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(10));
    // 以指定响应能由客户端和共享(代理)缓存进行缓存。
    Response.Cache.SetCacheability(HttpCacheability.Public);
  
    // 过期时间可调
    Response.Cache.SetSlidingExpiration(true);
    
    */
  }
}

页面输出缓存(VaryByParam)

Cahce/PageByParam.aspx

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号