关于缓存的问题
请问 HttpRuntime.Cache.Insert(cacheKey, ds, dependency,?, ?);
后面两个参数应如何写才可数据库变动时,及时响应到程序中的缓存的更新,而且在用户连续操作时,缓存不释放,不连续操作时,则释放缓存。是否与这有关。如果不是,请教方法。谢谢!如下是我的代码,请教应如何修改,谢谢。忘了说我在SQL2008也开启了service broker。
后面两个参数应如何写才可数据库变动时,及时响应到程序中的缓存的更新,而且在用户连续操作时,缓存不释放,不连续操作时,则释放缓存。是否与这有关。如果不是,请教方法。谢谢!如下是我的代码,请教应如何修改,谢谢。忘了说我在SQL2008也开启了service broker。
//DAL.CacheData.cs
namespace DAL
{
public class CacheData
{
private string _source;
///<summary>
///指示数据从何而来
///</summary>
public string Source
{
set { _source = value; }
get { return _source; } }
public CacheData()
{
_source = "未知类型";
}
///<summary>
///从缓存中获取数据
///</summary>
public DataSet GetDataFromCache()
{
string cacheKey = ConfigurationManager.AppSettings["TCM_sys_user"].ToString();
string connString = ConfigurationManager.ConnectionStrings["TCM"].ConnectionString;
//SqlCacheDependencyAdmin.EnableNotifications(connString);
if (HttpRuntime.Cache[cacheKey] != null)
{ _source = "从缓存中取得";
return (DataSet)HttpRuntime.Cache[cacheKey];
}
else
{
SqlDependency.Start(connString);
DataSet ds = new DataSet();
string sqlGetAllUser = "select * from sys_user";
using (SqlConnection conn = new SqlConnection(connString))
{ //SqlDataAdapter da = new SqlDataAdapter(cmd);
// DataSet ds = new DataSet();
// da.Fill(ds);
// DataView dv = ds.Tables[0].DefaultView;
using (SqlCommand cmd = new SqlCommand(sqlGetAllUser, conn))
{
SqlCacheDependency dependency = new SqlCacheDependency(cmd);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
//SqlDependency.Start(connString);
da.Fill(ds);
}
HttpRuntime.Cache.Insert(cacheKey, ds, dependency,DateTime.Now.AddMinutes(30), TimeSpan.Zero);
}
}
_source = "从表中取得";
return ds;
}
}
}
}
//sqlcachedependency.sqldependency.aspx
namespace sqlcachedependency
{
public partial class sqldependency : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DAL.CacheData cacheData = new DAL.CacheData();
gvShowUser.DataSource = cacheData.GetDataFromCache();
gvShowUser.DataBind();
lbl_source.Text = cacheData.Source;
HyperLink1.NavigateUrl = "index.aspx";
}
}
}
//sqlcachedependency.Global.asax
namespace sqlcachedependency
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
string connString = ConfigurationManager.ConnectionStrings["TCM"].ConnectionString;
SqlDependency.Start(connString);
}
protected void Session_Start(object sender, EventArgs e)
{
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
}
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
}
protected void Application_Error(object sender, EventArgs e)
{
}
protected void Session_End(object sender, EventArgs e)
{
}
protected void Application_End(object sender, EventArgs e)
{
string connString = ConfigurationManager.ConnectionStrings["TCM"].ConnectionString;
SqlDependency.Stop(connString);
}
}
}
...全文
相关推荐
如何解决缓存问题及如何设置缓存
缓存问题解决方案和设置缓存方法缓存是Web开发中一个常见的问题,它可以极大地影响网站的性能和用户体验。因此,解决缓存问题和设置缓存是非常重要的。在这篇文章中,我们将讨论如何解决缓存问题和设置缓存。
Ajax 缓存问题,Ajax 缓存问题
本篇文章将深入探讨Ajax缓存问题及其解决方案。首先,我们要理解为什么会出现Ajax缓存问题。在HTTP协议中,GET请求通常用于获取资源,浏览器为了提高效率,会对GET请求进行缓存。
Bert的缓存问题
然而,在实际应用中,尤其是在进行微调(fine-tuning)时,可能会遇到一些技术问题,其中就包括缓存问题。本文将深入探讨Bert的缓存问题及其解决方案。
如何解决Ajax请求结果的缓存问题说明
Ajax请求结果缓存问题解决方案Ajax请求结果缓存问题是指在IE浏览器中,默认情况下会对Ajax请求的结果进行缓存。当多个Ajax请求指向相同的URL地址时,只有第一次请求会真正发送到服务端,
两次请求相同的一个URL,会产生缓存问题。
**忽略缓存**:开发者在调试过程中,有时需要禁用缓存以确保每次请求都获取最新数据,否则可能因为缓存而错过问题的定位。**解决缓存问题的方法:**1.


