Anders Liu的.NET空间
传播知识源于掌握知识,但又高于掌握知识。我要做一个掌握很多知识的传播知识的人。
博客园
首页
新随笔
联系
订阅
管理
随笔 - 80 文章 - 2 评论 - 1197 trackbacks - 38
我的小工具
HTML、URL编解码工具
中国游戏开发者网络
|
论坛
广告
北京狼烟网络科技有限公司
北京市朝阳区曙光西里甲6号 时间国际A座1505&msg=2007101111175778000" frameBorder=0 scrolling=no>
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(8)
给我留言
查看留言
我管理的小组
正则表达式
Asp.Net MVC
博客园宝宝乐园
我参加的小组
创业交流
.NET 3.x
LINQ
ASP.NET
写书译书小组
.Net+MySQL
CLR基础研究小组
博客园出书小组
我参与的团队
北京.NET俱乐部(1/1558)
Windows Mobile 应用开发(0/605)
MVP(微软最有价值专家)团队(1/662)
软件项目管理团队(0/195)
CLR基础研究团队(0/415)
Windows Embedded开发(0/99)
博客园精华集出版(0/45)
正则表达式团队(0/2)
ASP.NET MVC团队(0/74)
我的标签
asp.net mvc
(19)
html
(2)
.net
(2)
ie
(2)
ie8
(2)
regex-lib.net
(2)
regex
(2)
CLR
(2)
CLI
(2)
PE
(2)
更多
随笔分类
ASP.NET MVC(19)
CLR / CLI(2)
P宝日记
随笔档案
2008年9月 (1)
2008年8月 (6)
2008年7月 (16)
2008年6月 (3)
2008年4月 (1)
2008年3月 (2)
2008年2月 (1)
2008年1月 (5)
2007年12月 (5)
2007年11月 (4)
2007年10月 (1)
2007年8月 (4)
2007年7月 (3)
2007年6月 (3)
2007年5月 (5)
2007年4月 (4)
2007年3月 (4)
2007年2月 (1)
2006年11月 (1)
2006年9月 (1)
2006年7月 (2)
2006年6月 (2)
2006年5月 (1)
2006年4月 (3)
文章档案
2006年4月 (1)
相册
MVP Logo
友情链接
【孟宪会之精彩世界】之.NET开发者园地
涵舍愚人
积分与排名
积分 - 215537
排名 - 154
最新评论
1. re: 【.NET正则表达式库】v1.0上线
添加搜索功能那会更好。
--Doho
2. re: [翻译] AJAX Panels with ASP.NET MVC
老大
在asp.net mvc preview5里好像不行,出错了JavaScript错误
--清风阁☆四少
3. re: 【.NET正则表达式库】v1.0上线
@Garfield.
是这样的。所以我打算关闭这个网站了。
--Anders Liu
4. re: 【.NET正则表达式库】v1.0上线
这种便利对那些那些想学但是对这些乱七八糟的东西有点发怵的初学者不见得是件好事。楼主是不是可以把它做成一个web版Regulator? 其次再提供一些网友上传的正则表达式,以供学习和交流。而且对上传的表...
--Garfield.
5. re: 【.NET正则表达式库】v1.0上线
向你学习
--小人物.net
阅读排行榜
1. 也说《不要奢望.NET能够跨平台》(19049)
2. 关于编码的思考(7360)
3. 晒一下我和老婆的婚纱照!(7244)
4. 《高性能网站建设指南》(High Performance Web Sites)非官方技术支持(3955)
5. 翻译:Single Sign-On for Everyone(3888)
评论排行榜
1. 晒一下我和老婆的婚纱照!(173)
2. 也说《不要奢望.NET能够跨平台》(81)
3. 【.NET正则表达式库】v1.0上线(66)
4. 写电子邮件是一件严肃的事情(62)
5. Internet Explorer 8之我见(44)
60天内阅读排行
1. [随笔] 不能卸,我舍不得。IE8,Beta2的。(2761)
2. [翻译] ASP.NET MVC Framework控制器操作安全性(1659)
3. 备忘录——压缩整数及其解压缩(1444)
4. [翻译] ASP.NET MVC中的PRG模式(1240)
5. [翻译] 使用ASP.NET MVC操作过滤器记录日志(1221)
在作缓存时使用SqlCacheDependency
请允许我先闲扯两句。
今天发生了不少事情。首先,确认了我已经为20年后的技术社区做出了不可磨灭的贡献。其次,[.NET正则表达式库](
http://regex-lib.net
)终于去掉了令人恼火的验证码,转而使用IP地址检验。最近两篇blog我将介绍其中用到的一些技巧。
今天要说的是在缓存时使用SqlCacheDependency。其应用场景是IP地址屏蔽,数据库里有一张表IPBlocked,记录了被屏蔽的IP。由于每次进行注册或尝试登录时都要检查IP,而IP屏蔽表又不会经常变化,所以需要使用缓存。并且该缓存依赖该数据表,即如果表中数据发生了变化,缓存应该失效。
好困啊,不多扯了,我这里就给出操作步骤。
1. 修改web.config,启用SqlCacheDependency。将下列代码加入web.config的<system.web>节:
<
caching
>
<
sqlCacheDependency
enabled
="true"
>
<
databases
>
<
add
connectionStringName
="regex_libConnectionString"
name
="IPBlockedDependency"
/>
</
databases
>
</
sqlCacheDependency
>
</
caching
>
这里的connectionStringName指定了在<connectionStrings>中添加的某一个连接字符串。name则是为该SqlCacheDependency起的名字,这个名字将在第3步中用到。
2. 执行下述命令,为数据库启用缓存依赖:
C:\Program Files\Microsoft Visual Studio
9.0
\VC
>
aspnet_regsql
-
C
"
Data Source=.;Initial Catalog=regex-lib;Integrated Security=True
"
-
ed
-
et
-
t
"
IPBlocked
"
这里-C后面的字符串是连接字符串(请替换成自己所需要的值),-t参数后面的字符串是数据表的名字。命令执行后,数据库中会多出一个
AspNet_SqlCacheTablesForChangeNotification表。
3. 在代码中使用缓存,并为其设置SqlCacheDependency依赖:
private
static
string
[] GetBlockedIPs()
{
//
1尝试从缓存中读取
string
[] ips
=
(
string
[])HttpContext.Current.Cache[BlockedIPCacheKey];
if
(ips
!=
null
)
return
ips;
//
2从数据库中读取
using
(RxDataContext db
=
new
RxDataContext())
{
ips
=
db.IPBlockeds.Select(ipb
=>
ipb.UserIP).ToArray();
}
//
3放入缓存
SqlCacheDependency depend
=
new
SqlCacheDependency(
"
IPBlockedDependency
"
,
"
IPBlocked
"
);
HttpContext.Current.Cache.Insert(BlockedIPCacheKey, ips, depend);
return
ips;
}
创建SqlCacheDependency时需要指定web.config中定义的SqlCacheDependency名字,并指定数据表的名称。
好了,这只是一个步骤列表,或者可以当作一个checklist用。
------
最后,[.NET正则表达式库](
http://regex-lib.net
)在注册、登录和发表回复时已经没有什么过多的限制了,欢迎大家访问、注册、把您的正则表达式分享进来。
Tag标签:
cache
,
SqlCacheDependency
posted on 2008-06-26 22:27
Anders Liu
阅读(1911)
评论(14)
编辑
收藏
网摘
FeedBack:
#1楼
2008-06-26 23:40
wsky
不知道博主在部署的时候,有没有遇到权限问题?
描述:
我在服务器上(虚拟主机)部署的时候,由于数据库不是自己的,但是部署SqlCacheDependency时所自动建立的存储过程和数据表均是dbo创建的,运行后就会报错没有启用sql轮询的权限
回复
引用
查看
#2楼
2008-06-27 00:07
曲滨*銘龘鶽
支持其他数据库不?如 Oracle
回复
引用
查看
#3楼
[
楼主
] 2008-06-27 00:13
Anders Liu
--引用--------------------------------------------------
wsky: 不知道博主在部署的时候,有没有遇到权限问题?
描述:
我在服务器上(虚拟主机)部署的时候,由于数据库不是自己的,但是部署SqlCacheDependency时所自动建立的存储过程和数据表均是dbo创建的,运行后就会报错没有启用sql轮询的权限
--------------------------------------------------------
自己的服务器,没遇到类似问题。
回复
引用
查看
#4楼
[
楼主
] 2008-06-27 00:15
Anders Liu
--引用--------------------------------------------------
曲滨*銘龘鶽: 支持其他数据库不?如 Oracle
--------------------------------------------------------
SqlCacheDependency,顾名思义,应该是仅支持Sql Server。不过模仿其源代码和AspNet_SqlCacheTablesForChangeNotification表的结构,不难写个OracleCacheDependency。
回复
引用
查看
#5楼
2008-06-27 02:21
空调过滤器 [未注册用户]
怎么用内存作磁盘缓存。*
回复
引用
#6楼
2008-06-27 07:39
新程金锣
呃……我理解上SQL SERVER那边做了缓存配置之后,在ASP.NET这边就不需要再把数据保存到Cache里了吧?要不然数据表内容发生变动之后,如何自动更新ASP.NET中的缓存?
我还是先去查一下……
回复
引用
查看
#7楼
[
楼主
] 2008-06-27 08:43
Anders Liu
--引用--------------------------------------------------
空调过滤器: 怎么用内存作磁盘缓存。*
--------------------------------------------------------
这个不是我等凡人考虑的。
回复
引用
查看
#8楼
[
楼主
] 2008-06-27 08:45
Anders Liu
--引用--------------------------------------------------
新程金锣: 呃……我理解上SQL SERVER那边做了缓存配置之后,在ASP.NET这边就不需要再把数据保存到Cache里了吧?要不然数据表内容发生变动之后,如何自动更新ASP.NET中的缓存?
我还是先去查一下……
--------------------------------------------------------
这个只是在SQL Server上做了个“缓存依赖”。另外,表中的数据变化后,缓存会自动“失效”而不会自动更新。文中步骤3里的代码段2和3,实际上实在手动更新缓存。
回复
引用
查看
#9楼
2008-07-21 19:37
Summer99
感谢楼主,正好我也在做这个功能
再请教一点:BlockedIPCacheKey是什么呢
我数据库做更改后缓存没失效,所以问问
tks
回复
引用
查看
#10楼
2008-07-21 19:49
Summer99
我是说,这个是自己随便取的一个cache名字吗
回复
引用
查看
#11楼
2008-07-21 19:53
Summer99
恩,偶尔可以奏效,不大明白
回复
引用
查看
#12楼
2008-07-21 20:41
Summer99
另外请教:这个做法是要固定时间到数据库里面查吗,表更改后怎样使Cache过期的,能简述一下详细的原理吗?
非常感谢
回复
引用
查看
#13楼
[
楼主
] 2008-07-21 22:20
Anders Liu
@Summer99
BlockedIPCacheKey只是随便起的一个名字。
其具体原理我也不大清楚,但应该是有SQL Server那边发起的,不需要程序轮询,效率应该还可以。
另外,缓存的确不是即时过期的,但对于缓存场景来说,这不重要。
回复
引用
查看
#14楼
2008-08-17 14:52
代码乱了
sql缓存依赖。很好很强大
回复
引用
查看
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
闪存
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索
相关文章:
Cache总义
温故知新ASP.NET 2.0(C#)(4) - 缓存&SqlCacheDependency
使用Visual Studio2005入门.Net2.0系列视频教程
在Windows下配置与使用CVSNT
国内网站Web Server和所用Cache类型统计
Google Chrome浏览器隐藏命令大揭秘
相关链接:
最新IT新闻:
2008年10月16日科技博客精选
微软ASP.NET MVC Beta版本发布
春天还是泡沫? 社交网站遭遇“过剩危机”
中国软件外包产业今年产值将超过40亿美元
Facebook托管照片数已超100亿张 既喜又忧