关于缓存. Cache和Session 问题

xchunyu 2004-03-24 10:55:21

现需要将一定容量的数据集(System.Data.DataSet缓存到当前请求, 以节约数据库服务器开销. 实际上缓存的数据用于Repeater的分页操作. 缓存可采用服务器端缓存(Cache)和Session方法. 现有以下疑问不得解决:
1. 如果使用Cache, 那么对于相同应用下的多个并发用户. 是否相同键(Key)的Cache会共用? 如果是, 则会造成数据上的混乱.
2. 如果使用Session, 则不会有以上问题, 那么Session的内部机理, 是否会将所有数据发送到客户端做为Cookie保存. 因为需要缓存的对象是一个DataSet, 所以一旦容量较大则会影响客户端性能. 也会给数据发回带来不便.
3. 目前我的解决方法是给Cache地Key加上唯一的SessionID前缀. 这样就不会有第一个问题. 然而如果并发用户过多, 系统是否会准确及时地回收这些资源而不会造成性能下降?

...全文
227 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xchunyu 2004-03-24
  • 打赏
  • 举报
回复
其实性能的问题应该不算大. 当前的操作完成后, 我会将用过的Cache覆盖成新的内容. 也就是说.同一个用户最多只有一个Cahce. 但是问题是系统什么时候会主动清除Cache. 我注意到建立Cache时有一个Dependency依赖对象. 怎样设法让当前用户离开后会及时清除Cache?
charles_y 2004-03-24
  • 打赏
  • 举报
回复
Cache 会造成混乱,除非你要缓存的这个东西不会因为用户的不同而不同
Session 开的太多,内容太大确实会给服务器造成负担
能用Cache 的地方尽量用Cache,因为它的个数是可以预见并可以控制的
luckweb 2004-03-24
  • 打赏
  • 举报
回复
好象你提到的几个方法都不是太好
谁还有好的方法,学习一下
cpp2017 2004-03-24
  • 打赏
  • 举报
回复
个人认为 Cahce + Key其实和Session差不多 如果不用Key所有用户会共用同一数据 Session中的数据并不是都保存在客户端cookies中,只是在 cookies保存了Session的ID和其他相关信息,其数据是保存 在Server端的内存中的
stephenzhou1234 2004-03-24
  • 打赏
  • 举报
回复
在 SESSION 下 保存了 一个状态变量
来验证用户是否 在有效登陆下操作 页面每到 N分钟后会自动刷新
我试过把SESSION调整很高的了 不过 好象不是很有用

SESSION过期问题很难解决

求一个无刷新 SESSION 不TIMEOUT的页面代码

想求一个合理的解决方法
huangsuipeng 2004-03-24
  • 打赏
  • 举报
回复
楼主是不是把整个dataset CACHE起来,然后每次按页码选出其中的一部分再绑定到Repeater中的呢?
基本同意cpp2017(幕白兄)
楼主提到的Dependency是缓存到期策略中使用到的
例如你可以将一个ds依赖到一个XML文件中,当XML文件发生改变时候,该ds会自动从CACHE删除(当然可以增加缓存删除回调(callback)重新读入ds)
具体去MSDN查Cache的Insert方法就可以了

确认用户离开比较困难,只能用SESSION的TIMEOUT,在SESSION_END中删除该CAHCE项。

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧