什么是缓存?对于刚入门的朋友来说可能比较模糊,或是只知道是个提高性能的东东。我按我的理解说一下:缓存的目的就是为了提高性能,而把一些数据存放在内存里,方便程序反复使用,所以缓存就是放在内存里的那些数据。那么我们在开发程序时,比如定义了一个静态变量,这个静态变量的值一般都会被一直存放在内存里,这个变量就是缓存了。当然这个缓存的生命周期是第一次被调用直到程序结束。也并非说只有全局的静态变量才叫缓存。比如我们在一个httpRequest接收开始便声明了当前上下文(CurrentContext),那么在整个页面的生命周期里,我们都可以获得当前上下文,那么这个Context也是缓存。 假如我们把复杂数据查询结果放在一个数据表里,以供其他程序调用,那这个临时表就是缓存表,也是缓存。总之,缓存就是为提高性能而存在的。缓存,就是开辟了一些内空间来换取程序的运行时间。
         我们在开发的日常工作中,经常会碰到各种缓存,最常见的莫过于浏览器缓存,经常需要强刷新才能看到页面被修改的结果。这是浏览器的缓存策略,某些页面你刷新多次,如果你会使用firebug或ie9的网页开发工具(F12)或chrome自带的开发工具(Ctrl+Shift+c)或httpwatch的话,你可以观察network一项,来看所有的http请求的状况,如果被缓存的话,status就不是200,而是304(not modified),这样你的服务器就不会接收这个请求。一般静态资源(图片、js、css、html)都会被缓存起来。
         还有就是DataSet(ADO.NET里的类,非.NET程序员可能不清楚)。DataSet是ADO.NET相对于ADO的亮点之一。他亮就亮在不需要一直与数据库连接。他是先把数据读取出来放入DataTable里,然后由程序员针对DataTable做数据处理。这么做的目的就是不占用数据库连接,假如用户的每一条数据处理非常耗时,如果不用DataSet而用DataReader的话,那么如果访问量稍微大一些就会出现连接数过多的异常或者连接排队过多而导致超时的异常或者数据库非常紧张而导致所有查询都是慢查询的糟糕情况。所以这个DataSet也是缓存的概念,虽然可能仅仅是短短的一个方法的生命周期,但其思想没变。
         理解了缓存的意思,那么该如何使用缓存?我们先思考下什么样的数据可以缓存或需要缓存?一般来说是比较常用的数据,公共的数据需要缓存。常用是相对于程序说来,比如网站的配置信息,到处都需要调用,最好缓存起来。公共是相对浏览者来说,某个浏览者的私有信息是不适合放入缓存的,比如账户信息,这些一般用Session来存放。事实上,Session也是缓存,Session的值存放于服务端的内存里,而每个Session对应一个SessionID,SessionID的信息存放于客户端的cookie里。程序每次调用Session的值时,先要从浏览器发送的cookie里找到一个SessionID,然后再从内存里找对应该ID的Session值,所以来说Session也是缓存。但我说是公共数据是因为在我们未来讲到的所使用的缓存里,不适合存放相对用户的私有数据。

从CSDN的博客来说,相对于浏览者的公共信息,有博客的资料、侧边栏、文章、评论,除了浏览者自己的信息外,貌似都是公共信息。那都要缓存吗?那就是要看缓存的必要性。假如不是CSDN,而是一个访问量不高的个人博客,如果把公共数据都缓存起来,难免有些自找麻烦的感觉。因为访问量不大,就是都缓存,这个性能的提升也是毫无意义的,而且从开发的角度来讲,增加了大量的工作(每增加、修改、删除都会牵扯到缓存的更新),但对于CSDN来讲,如果不缓存,或许数据库早就支撑不住挂掉了。可见缓存也是把双刃剑,用的好坏全看项目的需求。

今天就先开个引子,后面我会对博客案例的缓存架构进行分析,各种缓存技术和策略一一道来。喜欢的盆友们不要错过。

带你走进缓存世界(1):漫谈缓存相关推荐

  1. 带你走进虚拟化世界之kvm(转载)

    http://chuck.blog.51cto.com/10232880/1720953 带你走进虚拟化世界之kvm 2015-12-08 23:10:46 标签:云计算 虚拟化 kvm 原创作品,允 ...

  2. 阿里的27个项目资源带你走进Github世界!

    阿里的27个项目资源带你走进Github世界! 1.设计语言 & 前端框架 Ant Design https://github.com/ant-design/ant-design ★ 1488 ...

  3. 带你走进虚拟化世界之kvm

    转自:https://blog.51cto.com/chuck/1720953 一.走进云计算 云计算:云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问, 进入可配置的计算资 ...

  4. 仓鼠体重年龄对照表_一文带你走进仓鼠世界:仓鼠种类之叙利亚仓鼠(上)

    (宠鼠百科第76期) 今天咱们要谈的是仓鼠中的巨无霸--叙利亚仓鼠,又名金丝熊,黄金鼠.叙利亚仓鼠,很显然祖籍叙利亚,是位来自戈壁荒漠的浪子.叙利亚仓鼠体长12~15厘米,尾长1~1.5厘米,体重10 ...

  5. ❤️大学三年沉淀,把我的学习经验分享给你,爆肝万字带你走进编程世界!❤️

    Hello,大家好,我是Alex.时光匆匆,暑假过的很快,转眼又到了大学的开学季,我也是又混进了我们学院的新生群,发现大家对计算机充满着迷之向往,啊哈哈哈,不过没有人带着入门还是很容易走弯路的哦,今天 ...

  6. 带你走进STM32世界,看看它能做些什么???

    一.什么是STM32? 意法半导体(ST)集团于1988年6月成立,是由意大利的SGS微电子公司和法国Thomson半导体公司合并而成.1998年5月,SGS-THOMSON Microelectro ...

  7. 20个科学小知识,带你走进科学世界

    为什么星星会一闪一闪的? 我们看到星闪闪,这不是因为星星本身的光度出现变化,而是与大气的遮挡有关.大气隔在我们与星星之间,当星光通过大气层时,会受到大气的密度和厚薄影响.大气不是绝对的透明,它的透明度 ...

  8. 什么是云计算?3分钟带你走进云计算世界

    最近有朋友问我:"为啥你写的东西我都看不懂,也不是我平时用的."我不禁哑口无言,原因是不知道怎样用最简单的话告诉他我在写什么.的确,企业级的内容多是为解决企业应用问题,所以,笔者想 ...

  9. 让4K融入家庭 F1车迷带你走进赛车世界

    当"4K"的概念渐渐进入到大众视野后,很多支持4K的设备脱颖而出,电视,摄像机,单反,运动摄像机包括笔记本电脑,这些设备让人们在生活中更容易感受到4K的魅力所在.过往模糊的视频,让 ...

  10. 万字长文:带你走进shell世界

    王志远,微医前端技术部.爱好吉他.健身.桌游,最最关键,资深大厂员工(kfc外卖小哥),trust me,好奇心使生命有趣起来! 可视化shell调试?shell函数库?智能提示shell补全的vsc ...

最新文章

  1. 潜意识微笑,与钱无关——博客获奖有感
  2. 【笔记】Linux就该这么学-第六课第四章
  3. Spring AOP(一) AOP基本概念
  4. 微软发布紧急更新:修复Flash高危漏洞
  5. 环形二维数组求最大子矩阵
  6. 【hiho一下 第147周】小Hi的烦恼
  7. 手机号码正则_中国大陆手机号码的正则表达式总结ChinaMobilePhoneNumberRegex
  8. python 高等数学实验_高等数学——基于Python的实现
  9. 转载:全志问题解决方法
  10. 面向稀有事件的 Logistic Regression 模型校准
  11. 小程序下拉刷新没有响应
  12. STM32驱动开发(二)--USB Device RNDIS虚拟网卡(USB2.0 基础概念讲解)
  13. 500万存款,45岁可以退休不干了吗?
  14. 容联云聚客SCRM如何破SCRM保险应用困局
  15. 在哪下载Mysql数据库的JDBC驱动jar包
  16. 英文电影经典台词整理(原创)
  17. 编写函数求解圆台的表面积s和体积v
  18. 柏林大学计算机专业,计算机科学专业德国大学排行榜top10
  19. Hotspot虚拟机对象探秘
  20. 谷歌云实例如何使用 SSH 密钥登录

热门文章

  1. 使用minizip压缩文件
  2. 自建具备全文搜索能力的git server
  3. CAD转PDF其实很简单,掌握这4种方法就可以
  4. WPF中, DataGrid表格设置标题Header文字大小和行高
  5. js密码生成器小工具
  6. 电源硬件设计----升降压变换器(负压输出)基础
  7. python口算训练出题
  8. selenium 浏览器复用(java)
  9. Android开发-在Android应用里接入AdMob广告进行变现的实现
  10. (新)Chrome浏览器自定义背景插件