110,502
社区成员
发帖
与我相关
我的任务
分享
void Application_Start(object sender, EventArgs e)
{
#region SQL2005
SqlDependency.Start(WebConfigHelper.ConnectionString_SQL2005); //推荐将这段代码加到Global.asax的Application_Start方法中,
#endregion
}
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown
SqlDependency.Stop(WebConfigHelper.ConnectionString_SQL2005);
}
protected void Page_Load(object sender, EventArgs e)
{
// if (!IsPostBack)
// {
DataTable dt = HttpRuntime.Cache["dt"] as DataTable;
if (dt == null)
{
using (SqlConnection sqlCon = new SqlConnection(WebConfigHelper.ConnectionString_SQL2005))
{
sqlCon.Open();
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = sqlCon;
sqlCmd.CommandText = "select col2 from dbo.TableTest";
dt = new DataTable();
// SqlDependency dependency = new SqlDependency(sqlCmd);
// dependency.OnChange += this.dependency_OnChange;
SqlCacheDependency scd = new SqlCacheDependency(sqlCmd);
// 注册方法到委托,该委托是
CacheItemRemovedCallback onRemove = new CacheItemRemovedCallback(RemovedCallback);
// 新增或修改一条缓存记录
// scd.OnChange += new OnChangeEventHandler(scd_OnChange);
// scd. += new OnChangeEventHandler(Dependency_OnChange);
SqlDataAdapter sda = new SqlDataAdapter(sqlCmd);
sda.Fill(dt);
// HttpContext.Current.Cache.Insert("dt", dt, scd, DateTime.MaxValue, TimeSpan.Zero, CacheItemPriority.Default, onRemove);
HttpRuntime.Cache.Insert("dt", dt, scd, DateTime.Now.AddHours(1), TimeSpan.Zero, CacheItemPriority.Default, onRemove);
// HttpRuntime.Cache.Insert("dt", dt);
sqlCon.Close();
}
}
GridView1.DataSource = dt;
GridView1.DataBind();
// }
}
private const string CacheKey = "_CachKey";
public Model.SiteItem GetCacheSiteSetting(SqlConnection connection, string siteID)
{
Model.SiteItem Item = System.Web.HttpRuntime.Cache[CacheKey] as Model.SiteItem;
if (Item == null)
{
//重新查询Model
Item = siteDAL.QuerySiteItem(connection, siteID);
System.Web.Caching.AggregateCacheDependency dependency = new System.Web.Caching.AggregateCacheDependency();
dependency.Add(new System.Web.Caching.SqlCacheDependency("Site", "s_site"));
//如果數據沒有更變則緩存12小時
System.Web.HttpRuntime.Cache.Add(CacheKey, Item, dependency, DateTime.Now.AddHours(12), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, null);
}
return Item;
}
<system.web>
<caching>
<sqlCacheDependency enabled="true" pollTime="10000">
<databases>
<add name="Site" connectionStringName="SQLConnString1" pollTime="10000" />
</databases>
</sqlCacheDependency>
</caching>
</system.web>