我正在从我的用户表中执行COUNT(userid)并在网站上显示该号码,但我想知道是否还有其他更好的方法来获取,存储和显示此信息,而不是进行一次连接和COUNT()每次访问者加载网页时都会从dabatase中获取?
修改 我刚刚在MSDN上找到了有关缓存的信息,这似乎是绝对最好的方法,感谢TomTom!
如果我想用数据库中的MembersCount填充cachedString,这是正确的方法吗?
string cachedString;
cachedString = (string)Cache["CacheItem"];
if (cachedString == null)
{
MySqlConnection Connection = siteStuff.GetConnection();
MySqlCommand c = new MySqlCommand("SELECT COUNT(id) as TheCount FROM user", Connection);
Connection.Open();
MySqlDataReader reader = c.ExecuteReader();
reader.Read();
cachedString = reader["TheCount"].ToString();
Connection.Close();
Connection.Dispose();
Cache.Insert("CacheItem", cachedString);thanks TomTom!
编辑:我目前正在使用此代码:
int cacheNumberUsers;
cacheNumberUsers = (int)Cache["MembersCount"];
if (cacheNumberUsers == null)
{
cacheNumberUsers = siteStuff.GetNumberUsers();
Cache.Insert("MembersCount", cacheNumberUsers);
}
nrRegMembers.Text = cacheNumberUsers.ToString();
但我得到错误:
System.NullReferenceException: Object reference not set to an instance of an object.
在线:
cacheNumberUsers = (int)Cache["MembersCount"];
修改 我想我需要先将项目插入缓存吗?
Cache.Insert("MembersCount");
但是我把这段代码放在哪里?换句话说,我应该把它放在OnLoad中,以便它在每个页面请求时触发吗?或者我应该检查它是否存在?
答案 0 :(得分:0)
不要将非数据库问题作为数据库问题。
如:生成页面的缓存输出。使用.NET?使用输出缓存/部分输出缓存来返回每分钟左右生成一次的旧sql。
解决数据库上的perforamcne问题而忽略更高级别并不聪明 - 而对于.NET,所有Web前端技术都有wnoderfull输出缓存机制。如果你说你使用哪一个......我可以用链接来帮助你。