为了提高系统性能,缓存是必不可少的,但是一不小心,就会出现null。
例如情况下面的情况:一个website有一个default.aspx页面,在页面Page_Load事件里,我往缓存myname里存入数据,如下:

 protected void Page_Load(object sender, EventArgs e)
    {
       
        if (!Page.IsPostBack)
        {
            HttpContext ctx = HttpContext.Current;
            ctx.Cache.Insert("myname", "dream", null, DateTime.Now.AddHours(1), TimeSpan.Zero);
        }

}

然后在页面防止一个button,在button事件里读取缓存,你很容易写成如下代码:

 protected void Button1_Click(object sender, EventArgs e)
    {
        HttpContext ctx = HttpContext.Current;
     if(ctx.Cache["myname"] != null)
      {
          Response.Write((string)ctx.Cache["mynamn"]);          
      }
      else
      {       
        ctx.Cache.Insert("myname","dream",null,DateTime.Now.AddHours(1), TimeSpan.Zero);
        Response.Write((string)ctx.Cache["myname"]); 
         
     } 
}

然而,当你运行时,你会发现类似这样的代码并不能够取到缓存里的值,正确的方法应该是:

 protected void Button1_Click(object sender, EventArgs e)
    {
        
        HttpContext ctx = HttpContext.Current;
        string name = Cache["myname"] as string;

if (name != null)
        {
            Response.Write(name);
        }
        else
        {
            ctx.Cache.Insert("myname", "dream", null, DateTime.Now.AddHours(1), TimeSpan.Zero);
            Response.Write(name);
        }
 
    }

这个方法和上面方法唯一一个区别,就是把缓存放到一个局部变量里,通过判断局部变量而不是缓存看其是否为空。

小心!!,使用缓存的陷阱相关推荐

  1. Hibernate二级/查询缓存的陷阱

    这篇文章将介绍如何设置Hibernate二级和查询缓存,它们如何工作以及最常见的陷阱. 休眠二级缓存是用于存储实体数据的应用程序级缓存. 查询缓存是一个单独的缓存,仅存储查询结果. 这两个缓存实际上是 ...

  2. 创业小心三种诈骗陷阱

    创业虽是当今的时尚,但人人都知道"创业有风险,下海需谨慎".创业者一夜之间被骗几十万,这样的事情并不少见.那么,创业者究竟应该预防哪些陷阱呢? 网络诈骗:便捷,行骗也方便 [案例] ...

  3. 云挣宝——小心网络上的陷阱

    说到兼职,我相信现在很多人都做过,比如发传单.兼职模特.手工兼职,或者我们知道的淘宝刷账单.事实上,很多兼职工作,但随着互联网的兴起,很多"新"的兼职工作正在慢慢涌现. 但这些兼职 ...

  4. [改善Java代码]避开基本类型数组转换列表陷阱

    开发中经常用到Arrays和Collections这两个工具类. 在数组和列表之间进行切换.非常方便.但是也会遇到一些问题. 看代码: import java.util.Arrays; import ...

  5. html应用缓存,HTML5应用缓存

    使用应用程序缓存,通过创建缓存清单文件,可以轻松地创建web应用程序的脱机版本. 什么是应用缓存? HTML5 介绍应用程序缓存,这意味着Web应用程序缓存,并且在没有Internet连接的时候可访问 ...

  6. 小心pthread_cond_signal和SetEvent之间的差异

    ZZ FROM: http://blog.csdn.net/absurd/article/details/1402433 ======================================= ...

  7. 什么是pdi检测_为什么国人买车钟爱白色?这几点购车陷阱不要踩

    买车,大家最注重的是哪些细节呢?一般懂车的人都会先看汽车的性能和价格,也就是我们常说的性价比,当然了,这里也得带上汽车的颜值.俗话说,颜值不够,衣品来凑,人是这样,车也一样,我们先抛开汽车本身的造型不 ...

  8. 高性能程序设计,缓存为王

    作者 | 一凡sir,全栈工程师,慕课网精英讲师 来源 | 慕课网(imooc.com) 背景 我们在程序设计时,有一个极其重要的非功能性指标:性能,总是无时无刻不缠绕在程序员的脑海,尤其是我们开发的 ...

  9. 通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行(转)

    本文将讨论: • 缓存和 Forms 身份验证 • 视图状态和会话状态 • 配置文件属性序列化 • 线程池饱和 • 模拟和设置配置文件 本文使用了下列技术: .NET Framework.ASP.NE ...

最新文章

  1. Mybatis的xml配置备忘
  2. HDU3496-Watch The Movie
  3. 如何清除aspx网页中的flash缓存
  4. Elastic Nodes Example 翻译及学习整理
  5. python生成器yield_python 生成器yield的总结
  6. 神经网络(补充)(第五章)
  7. 微信小程序console.log出来的是object的问题解决方法
  8. 如何用2分钟做出一张拥有“黑洞”和“脑洞”的热力地图?
  9. EDA实验课课程笔记(四)——TCL脚本语言的学习2
  10. python importlib qpython_Python的import机制
  11. Js查找数组中元素的位置
  12. 喜迎二十大知识竞赛答题小程序源码
  13. 计算机网络——循环冗余校验码
  14. PPT用宏插入不同背景图片
  15. 删除2345输入法和智能云输入法这两个狗屁玩意的注册表
  16. 6846. 【2020.11.02提高组模拟】旅人1970
  17. Trembling ! Java类的加载过程详解(加载验证准备解析初始化使用卸载)
  18. LeetCode摆动序列
  19. PS2018学习笔记(03-18节)
  20. Navicat导出ncx文件并解密连接密码

热门文章

  1. 如何架设Linux打印服务器
  2. 《精通软件性能测试与LoadRunner最佳实战》—第1章1.1节软件测试基础
  3. NSString 转为gbk
  4. hdu5651 xiaoxin juju needs help(逆元)
  5. 关于博客的排版和字体
  6. 文件的上传下载功能的实现(包括进度条)[telerik控件]
  7. 高清壁纸:60款可爱的圣诞节电脑桌面壁纸《中篇》
  8. Golang 25 个保留关键字
  9. ubuntu下python安装pandas和numpy等依赖库版本不兼容的问题RuntimeWarning: numpy.dtype size changed...
  10. Linux取消挂载,删除用户及其目录