All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
CDocument类的UpdateAllViews()成员函数
Sql,server一些常见性能问题的总结_[SQL,Server教程]
怎么用javascript进行拖拽_JavaScript技术_编程技术
怎样用PHP来给网页做导航栏_php资料_编程技术
Linux下Apache并发连接数和带宽控制_php资料_编程技术
apache的几个设置(目录,权限等)_php资料_编程技术
Windows 下架设 PHP 服务器_[PHP教程]
Xml学习笔记(一)基础篇_[XML教程]
DropDownList,绑定数据库中的字段获取下拉列表值_[Asp.Net教程]
C#教程:POP3与SMTP协议使用实例
Reading number is top 10 pictures
Household design of gorgeous series
王艳写真温柔如水1
一万二一支的万珂,用得真心肉疼。
BingBingFan apple dew point photo gallery2
Black and white also sexy--YanLiu2
某某人向找小三的人宣战了
The real super beauty1
More attractive than sora aoi3
Send some Valentine's day cartoon
Chinese paper-cut grilles art appreciation3
Download software ranking
软件工程思想
Unix video tutorial13
尖东毒玫瑰B
WebService在.NET中的实战应用教学视频 → 第2集
Boxer's Top ten classic battle6
少妇苏霞全本
网络管理员第三版
asp.net技术内幕
Tram sex maniac 2 (H) rar bag8
SQL2000 For 4IN1
归海一刀 published in(发表于) 2014/1/30 1:12:06 Edit(编辑)
温故知新ASP.NET,2.0(C#)(4),-,Cache&SqlCacheDependency_[Asp.Net教程]

温故知新ASP.NET,2.0(C#)(4),-,Cache&SqlCacheDependency_[Asp.Net教程]

温故知新ASP.NET 2.0(C#)(4) - Cache&SqlCacheDependency_[Asp.Net教程]

温故知新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
配置文件中的配置











如果不是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" %>


Duration="10" VaryByParam="none"



<%=DateTime.Now %>



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
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="PageByParam.aspx.cs"
Inherits="Cahce_PageByParam" Title="页面输出缓存(VaryByParam)" %>


<%@ OutputCache CacheProfile="CacheTest" VaryByParam="p1;p2" %>


CacheProfile="CacheTest" VaryByParam="p1;p2"


CacheProfile="CacheTest" - 从web.config中读信息


get或post方式都行



第一组


第二组


第三组



<%=DateTime.Now %>



上面页所需的web.config中的配置









页面输出缓存(VaryByControl)
Cahce/CacheControl.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="CacheControl.ascx.cs"
Inherits="Cahce_CacheControl" %>
<%@ OutputCache Duration="10" VaryByControl="DropDownList1" %>


<%=DateTime.Now %>



DataTextField="text" DataValueField="value">






Cahce/PageByControl.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="PageByControl.aspx.cs"
Inherits="Cahce_PageByControl" Title="页面输出缓存(VaryByControl)" %>


<%@ Register Src="CacheControl.ascx" TagName="CacheControl" TagPrefix="uc1" %>


未经缓存设置的容器页:
<%=DateTime.Now %>



经过VaryByControl设置的用户控件,根据DropDownList的不同缓存不同的内容(用户控件中的@OutputCache指令为Duration="10"
VaryByControl="DropDownList1"):




数据缓存
Cahce/Data.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Data.aspx.cs"
Inherits="Cahce_Data" Title="数据缓存" %>







Cahce/Data.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_Data : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 一看就懂
if (Cache["key"] == null)
{
Cache.Insert("key", DateTime.Now, null, DateTime.Now.AddSeconds(10), TimeSpan.Zero);
}


DateTime dt = (DateTime)Cache["key"];
lbl.Text = dt.ToString();
}
}


替换缓存(部分区域强行不使用缓存)
Cahce/Substitution.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Substitution.aspx.cs"
Inherits="Cahce_Substitution" Title="替换缓存(部分区域强行不使用缓存)" %>


<%@ OutputCache Duration="10" VaryByParam="none" %>


Duration="10" VaryByParam="none"



<%=DateTime.Now %>



API 向返回当前日期的静态方法中插入动态回调,此回调在每次请求时都会执行

<% Response.WriteSubstitution(new HttpResponseSubstitutionCallback(GetTime)); %>



使用Substitution 控件插入动态内容




Cahce/Substitution.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_Substitution : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{


}


// 回调函数所调的静态方法
public static string GetTime(HttpContext context)
{
return DateTime.Now.ToString();
}
}


SqlCacheDependency
页的Sql缓存
Cahce/SqlCachePage.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="SqlCachePage.aspx.cs"
Inherits="Cahce_SqlCachePage" Title="页的Sql缓存" %>


<%@ OutputCache Duration="999999" SqlDependency="VS2005_Test:sqlcache" VaryByParam="none" %>


Duration="999999" SqlDependency="VS2005_Test:sqlcache" VaryByParam="none"

如果是SqlServer2005则改成SqlDependency="CommandNotification

注意配置文件中的配置



<%=DateTime.Now %>



数据源控件的Sql缓存
Cahce/SqlCachePage.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="SqlCacheDataSourceControl.aspx.cs"
Inherits="Cahce_SqlCacheDataSourceControl" Title="数据源控件的Sql缓存" %>




DataSource控件设置如下属性:EnableCaching="True" SqlCacheDependency="VS2005_Test:sqlcache"
CacheDuration="Infinite"

如果是SqlServer2005则改成SqlDependency="CommandNotification

注意配置文件中的配置



<%=DateTime.Now %>



CacheDuration="Infinite" ConnectionString="<% ConnectionStrings:SqlConnectionString %>"
SelectCommand="SELECT * FROM [SqlCache]">





web.config中的相关配置

providerName="System.Data.SqlClient" />












注意
Sql Server 2005 基于通知的缓存失效,不用aspnet_regsql设置,要设置属性SqlDependency="CommandNotification"。在首次执行某 SQL 查询之前,必须在应用程序某处调用 System.Data.SqlClient.SqlDependency.Start() 方法。此方法应放在 global.asax 文件的 Application_Start() 事件中。因为Sql Server 2005 基于通知的缓存失效对支持查询通知的查询语法有许多限制,所以我觉得最好先别用,而是使用轮询机制。在使用轮询机制时如本例子中的SqlCacheDependency="VS2005_Test:sqlcache",冒号前面是配置文件中配置的相关值指向数据库连接,后面是启用SqlCache的表名,注意区分大小写。

[源码下载]


作者:webabcd







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.