在C#尝试了5种方法进行数据缓存,具体如下:
(如有遗漏,错误欢迎大家指正,欢迎提建议。)
1:Session方法:此方法是针对于每个用户来的,如果用户量比较大,那么建议不要采用此方法,否则会大量耗尽服务器资源。
2:Cache方法:
    2.1:对于每个用户来说访问的数据最好是一致的,否则要用不同的key标识不同的缓存。 (要缓存的数据至少也是按用户类型来分的,如果每个用户可以按条件检索得到不同的数据的话,即使不造成数据混乱, 估计也跟session没什么区别了,用户很多的话太耗服务器资源)。
     2.2:如果每个用户得到的数据都不同,而且用户数量较多,应该考虑往客户端存了。
    2.3:需要考虑当生成缓存后,如果数据库中的数据发生变化了。而造成用户得不到最新的数据的问题。(可参考:"数据库缓存相关性"的文章)
3:往客户端写文件
首先A页面在运行的时候,从数据库中取到了数据集,在显示出数据报表的同时,A页面将数据集转化为xml文件,写入客户端。客户如果要打印该报表,那么程序就从客户端取存入的xml文件,如果xml文件存在,就从中读取数据并显示成打印报表显示出来。如果xml文件不存在,就提示重新检索数据。
例如:
<script type=text/javascript>  //给客户机上写文件
    function ws()
    {
       var fso,ctf;
       fso = new ActiveXObject("Scripting.FileSystemObject"); //IE的安全设置里面需要把没有标记为安全的ActiveX控件和脚本设置
        为“启用”,才不会提示。
       ctf = fso.CreateTextFile("c:\\luiTestfile.txt",true);//true为可以覆盖原有文件      
       ctf.Write("write content in file");
       ctf.Close();       
    }
</script>
但是,每次操作客户端的文件,系统都会提示是否运行没有标识的ActiveX控件,用户点否就不能成功保存文件了。
4:用cookie来存储
--------------------写cookie----------------------------------------
HttpCookie myCookie = new HttpCookie("DateCookie_lui");//DateCookie_lui为要创建的cookie键值对的键名。
DateTime now = DateTime.Now;
myCookie.Value = now.ToString();//给此cookie赋值
myCookie.Expires = now.AddMinutes(1);//设置cookie的过期日期和时间(此为1分钟后过期),在客户再次访问服务 器同时附带cookie文件,如其中以这个名字的cookie过期,就会自动清除它。
this.Response.SetCookie(myCookie);//将此cookie写入客户端
--------------------读cookie----------------------------------------
HttpCookie myCookie = new HttpCookie("myTestCookie_lui");//创建一个cookie操作对象
myCookie = Request.Cookies["DateCookie_lui"];//得到客户端传来的cookie数据,DateCookie_lui为要取的cookie键值对的键名
if(myCookie != null)
Response.Write(" Cookie Name is:"+myCookie.Name+". Cookie Value is:"+myCookie.Value);
else
Response.Write(" Not found!");
用cookie的方法存储数据,经过我反复尝试发现cookie存储值的大小被限定,(每项仅可存汉字仅1686个,字母或数字仅5059个),且cookie文件的大小一旦超过大小(20kb左右)就会导致找不到页面的错误,且每个cookie文件中只能存20项键值对。
5:尝试在A页面把dataset转化为xml字符串,隐藏于页面中,post提交到B页面;在B页面取到该xml字符串,然后将xml字符串转化为dataset,生成报表。
将dataset转化为xml的字符串:
 vDataXmlStr=ds.GetXml();//得到数据集的xml字符串
 this.hidXmlStr.Value=vDataXmlStr;//存入页面的隐藏元素中
------------------------------------------------------------------------
将xml字符串转化为dataset:
 vXmlStr = Request.Form["hidXmlStr"].ToString();//取xml字符串的变量值
 System.IO.StringReader vSR = new System.IO.StringReader(vXmlStr);//读取字符串
 ds.ReadXml(vSR);//将xml读入dataset中

转载于:https://www.cnblogs.com/ASPXML/archive/2011/09/07/2170186.html

C# 中数据缓存总结相关推荐

  1. ASP.NET中数据缓存

    缓存 缓存:把数据放到内存里面,下次请求的时候,直接从内存中读取数据返回给客户端就可以了,不用再去访问数据库了或磁盘.也就是内 存空间换去磁盘读取数据的时间. 缓存就是把你要访问的资源放在内存中,占用 ...

  2. 解决EF 4.0 中数据缓存机制

    EF4.0默认开启缓存机制,如果想要禁用缓存机制的话,则须加上一句话:_db.CreateObjectSet().MergeOption = MergeOption.OverwriteChanges; ...

  3. java中数据池有哪些_什么是数据库的 “缓存池” ?(万字干货)

    1.Buffer Pool 概述 Buffer Pool 是什么?从字面上看是缓存池的意思,没错,它其实也就是缓存池的意思.它是 MySQL 当中至关重要的一个组件,可以这么说,MySQL的所有的增删 ...

  4. 在Spring Boot中使用数据缓存

    关注公众号[江南一点雨],专注于 Spring Boot+微服务以及前后端分离等全栈技术,定期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的 Java 干货! 春节就要到了,在回家之前要 ...

  5. Android RxJava操作符的学习---组合合并操作符---从磁盘或内存缓存中获取缓存数据

    1. 需求场景 2. 功能说明 对于从磁盘 / 内存缓存中 获取缓存数据 的功能逻辑如下: 3. 具体实现 详细请看代码注释 // 该2变量用于模拟内存缓存 & 磁盘缓存中的数据String ...

  6. 怎样在微信中清理数据存储空间?经验技巧!如何在微信中清除缓存数据信息?

    现在微信已经成为我们大家生活中的一款主流聊天软件了,在生活中我们都会使用微信来与朋友家人之间进行聊天互动,在工作中使用微信发布信息与客户同事之间进行交流沟通,在我们大家使用微信的同时,会产生许多的缓存 ...

  7. 【SpringBoot】27、SpringBoot中整合Ehcache实现热点数据缓存

    EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点,是 Hibernate 中默认的 CacheProvider.用惯了 Redis,很多人可能已经忘记了还有 EhCache ...

  8. 《十四》微信小程序中的常用 API之登录、获取用户信息、支付、提现、跳转小程序、网络请求、弹框、导航、数据缓存、图片、查看文档、音频、拨打电话、剪贴板、滚动、WXML

    微信小程序提供了 wx 这个全局变量,通过这个全局变量可以调用微信小程序的 API. 登录: wx.login():获取登录凭证 code.通过登录凭证 code 进而换取用户登录态信息,包括用户在当 ...

  9. 【Java项目中 利用Redis实现数据缓存】

    文章目录 Java SpringBoot项目中 用Redis实现数据缓存 1 环境搭建 1.1 maven坐标 1.2 配置文件 1.3 配置类 2 实现缓存短信验证码 3 缓存菜品数据 4 Spri ...

最新文章

  1. 你有哪些深度学习(rnn、cnn)调参的经验?
  2. 在线作图|FAPROTAX数据库在线注释
  3. ajax请求锁屏功能
  4. js截屏 video_js获取视频截图
  5. hmr webpack 不编译_webpack HMR未加载更改
  6. PlistBuddy简单使用
  7. Redis Sentinel 配置文件
  8. Android开发之播放量点赞量打赏量收藏量单位格式化工具类
  9. 本地读取服务器Xml文件及本地读本地的xml
  10. 【Java】设计模式在Gourmet咖啡系统中的应用
  11. 在ibatis中做等值判断(if-else)
  12. 称重指示器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  13. 苹果和谷歌在印度下架数十款中国应用;贾跃亭宣布破产重组完成;Tails 4.8 发布| 极客头条...
  14. 自动化测试——DDT用法——结合unittest、requests库
  15. HDU 2243 考研路茫茫——单词情结(AC自动机 + 矩阵快速幂)题解
  16. html+css实现自定义图片上传按钮
  17. 剑指Offer之二维数组中的查找
  18. 八核处理器真的比四核性能强悍吗?
  19. 学习php开发难吗,PHP开发自学难吗,PHP自学要多长时间?
  20. 最全16套vue.js入门和项目实战+素材+源码

热门文章

  1. es6 --- Reflect的静态方法
  2. Vue学习笔记(一)—— 什么时候需要import Vue from 'vue'
  3. Spring Cloud Gateway 路由转发之After(Before)路由断言工厂使用
  4. 吉林省第二条国际铁路联运大通道“长珲欧”启动测试
  5. codeforces C. Diverse Permutation(构造)
  6. 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。
  7. 如何导出SQL Azure脚本?
  8. 最大最完整的---NAG Fortran 算法库
  9. Huawei S8512
  10. cartographer学习笔记--如何保存cartagrapher_ros建好的地图