数据缓存

来源:互联网 发布:linux查看检测网络命令 编辑:程序博客网 时间:2024/04/26 12:51
如果你不知道如何进行数据缓存
C# code

1
2
3
4
5
6
7
8
9
10
11
12
public static UserInfo GetUserInfo(stringid)
{
var cache = HttpRuntime.Cache;
var key ="用户 " + id +"的信息";
var ret = (UserInfo)cache[key];
if(ret == null)
{
ret = 从数据库中读取用户信息(id);
cache.Insert(key, ret,new SqlCacheDependency("MyDatabase","UserInfomation"));
}
returnret;
}


这样,每一个用户的UserInfo是缓存在内存中的,你在cookie中金需要保存其id号即可,根本不应该“经编码加密后放到 cookie 里”。你可以想象一下,将大量信息随每一次客户端请求都在千里之外的客户端与服务器之前来回复制,这比后台服务器本地操作要慢多少倍速度啊!

.net内存对象根本不在cookie中,cookie中就只有它的id号而已。


----

使用了 SqlCacheDependency。实际上缓存依赖项在.net中有很多种,你还可以自定义自己的CacheDependency,也可以使用 AggregateCacheDependency 将多个 CacheDependency 封装到一个CacheDependency里边。

例如你可以使用

C# code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static UserInfo GetUserInfo(stringid)
{
var cache = HttpRuntime.Cache;
var key ="用户 " + id +"的信息";
var ret = (UserInfo)cache[key];
if(ret == null)
{
ret = 从数据库中读取用户信息(id);
var c = cache["ua"];
if(c == null)
cache.Insert("ua", DateTime.Now.Ticks);
cache.Insert(key, ret,new CacheDependency(null,new string[] {"ua" }));
}
returnret;
}

这里不是依赖于SQL Server的“表数据更新通知”,而是自己定义了一个标志ua,当这个标志的数据改变时就会连带地清除UserInfo的缓存信息。

然后你的程序里凡是需要刷新缓存的地方(例如修改用户信息),就可以写
C# code
?
1
HttpRuntime.Cache["ua"]= Datetime.Now.Ticks;
这样一句话来通知刷新缓存。



通过模拟应用程序的负载,您可以测试并发问题,更好地了解应用程序在压力下的行为。通过刷新浏览器来测试负载和并发性并不是一种有效的测试。


以下是 Microsoft 提供的 Web 压力工具:

    Web Capacity Analysis Tool(Web 能力分析工具)
    • IIS 6.0 资源工具包工具中包括 WCAT 5.2。要下载 IIS 6.0 资源工具包工具,请访问下面的 Microsoft 网站:
      http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&DisplayLang=en
    • IIS 7.0 Web 能力分析工具可以从下面的 Microsoft 网站下载:
      http://www.iis.net/downloads/default.aspx?tabid=34&i=1466&g=6

  • Visual Studio Team System 2008 Test 版

    有关更多信息,请访问以下 Microsoft 网站:
    http://msdn.microsoft.com/zh-cn/teamsystem/dd408381.aspx
使用这些工具,您可以对 Web 服务器进行压力测试,以查看它在成百上千个用户在高峰时间访问应用程序时的反应。您也可以使用这些工具来测试服务器端组件,以查找性能、锁定以及其他扩展性问题。还可以针对并发性、事务、用户数、锁定、池等参数,对依赖于数据库的 Web 应用程序进行测试。



regedit → 打开注册表 → 找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state \Parameters 节点 → 将 AllowRemoteConnection 的键值设置成“1”(

有很多我们不了的东西

原创粉丝点击