主题:从案例引发的对缓存设计的思考

背景: 谈到性能优化,势必要谈到缓存架构的设计与使用。几乎是所有人都知道缓存的威力,但是知道终归只是知道,如何真正合理的在自己的项目中进行使用,又是另外一回事了。我们团队为不少的公司的项目进行了性能与架构的优化,遇到了不少由于误用,滥用缓存带来的问题,这些项目的缓存不仅没有使得性能进行提示,反而成为了性能瓶颈。

缓存的使用,没有定论,没有所谓“一定,必须等XXX这样”,没有这样的金科玉律,一切都是“根据项目的实际情况而定”,但是,我们看到的情况并不是这样的,我们也问过很多的人,回答让我们吃惊“上网大家都这样的用的啊,XXX就应该是这样的啊”。机械式的照搬,不带头脑的瞎用,结果可想而知。我们本次的讨论,是实实在在的干货的讨论,会给出一些常用的策略和场景,大家可以根据情况使用,希望是“授之以渔”,而不是生搬硬套。

 讨论大纲:
        不同项目中,你认为在哪里可以使用缓存(例如。以Web项目为例子)
        缓存的策略是什么
        如何设计比较智能的缓存
        缓存中数据以及不同数据带来的性能问题
        常见的缓存误区

 
 
这样吧,我先开个头,大家可以一起参与!
我首先说说在项目中可以使用缓存的地方。

我这里用一个图可能表述的更加清楚!
如图:

 
 
 
 
 
既然我们谈缓存这个话题,那么我们就把这个话题谈细致一点,因为很多时候:谈大帽子的话很多人都会滔滔不绝,但是一到真实的细节与落实的地方,很多人就偃旗息鼓了,呵呵 有点”吹起来,天下无敌;做起来,一无是处“的感觉。

我们首先就来看看浏览器的缓存。
这个好搞啊,做过网站的朋友都知道,这个设置主要就是通过设置:Cache-Control 这个响应头来实现的,如下:

 
2012-05-17 10:02 上传

下载附件 (16.76 KB)

 

不同的技术平台,实现的方式不一样,大家也不要纠结这些平台的差异,只要最后结果是一样的就OK了,要怀着包容心去看每一种技术,如果连技术的差异性都无法容忍,未必也太小家子气了,呵呵呵。

例如,在微软技术的ASP.NET中,可以通过几种方式来实现:
1.页面中设置,如下:

2.代码中设置,如下:

3.IIS中设置,如下:

 
 
浏览器缓存可以缓存图片,js,css,当然,还可以把一些数据,通过js对象的形式保存在浏览器中。

浏览器缓存的问题主要在于图片,js,css的更新上面。

例如如果我们设置了缓存的时间为1一个月,那么这些资源很有可能就在一个月还没有到就因为我们发布新的版本而更新了。这个时候,浏览器不会知道的,还是会使用老的版本。
这不是我们希望看到的,解决的办法也是很简单,如果大家留心点,就会发现很多的站点的js,css是这样命名的:XXX-1.2.js

这就是通过版本控制来来使得浏览器重新下载新的资源。

 
 
 
内容太多,更多请参看:http://www.agilesharp.com/Forum.aspx/t-17

【案例讨论】从案例引发的对缓存设计的思考,干货讨论,绝对不玩虚的相关推荐

  1. 范围变更管控案例_项目管理案例讨论“如何有效开展项目变更管理”

    项目管理案例讨论"如何有效开展项目变更管理" [ 日期:2019-3-14 ] 项目变更管理是指项目组织为适应项目运行过程中与项目相关的各种因素的变化,保证项目目标的实现而对项目计 ...

  2. 3万6千字爆肝,前端进阶不得不了解的函数式编程开发,含大量实例,手写案例,所有案例均可运行

    3w6爆肝,前端进阶不得不了解的函数式编程开发,含大量实例,手写案例,所有案例均可运行 认识函数式编程 函数相关复习 函数是一等公民 高级函数 函数作为参数 案例 1,模拟 forEach 案例 2, ...

  3. 中职校计算机案例教学法,浅析案例教学法在中职学校计算机专业中的应用

    :一-~堡-一皇- .照 UJi AN CO M PUTER 浅析案例教学法在中职学校计算机专业中的应用 李晓琴 (福建_ Z - - _, l k学校福建福州 3 5 0 0 0 2 ) [摘要]: ...

  4. Mybatis案例升级版——小案例大道理

    纯Mybatis案例升级版--小案例大道理 前言: 这几天看了一本书<原则>,在上面看到了一句话叫"每个人都把自己眼界的局限当成世界的局限",大学生是?,大学就是鱼缸, ...

  5. scala案例_Scala案例类和案例对象深入(第1部分)

    scala案例 发表简短目录 (Post Brief TOC) Introduction介绍 What is Case Class什么是案例类 What is Case Object什么是案例对象 S ...

  6. scala案例_Scala案例类和案例对象深入(第2部分)

    scala案例 发表简短目录 (Post Brief TOC) Introduction介绍 Scala's Case Class Benefit-6Scala案例类权益6 Advantages of ...

  7. DDD专题案例二《领域层决策规则树服务设计》

    前言介绍 在上一章节介绍了领域驱动设计的基本概念以及按照领域驱动设计的思想进行代码分层,但是仅仅只是从一个简单的分层结构上依然没法理解DDD以及如何去开发这样的微服务.另外往往按照这样分层后依然感觉和 ...

  8. BIM应用案例解析:基于BIM的装配式建筑深化设计

    装配式建筑是国家重点发展的战略性绿色产业,是建筑工业化的重要组成部分,具有施工成本低.施工效率快以及安全系数高等特点,与现代的城市建设的基本需求相符合. 在装配式建筑生产建造中,借助BIM技术,可以有 ...

  9. 刚柔软机器人参数化建模仿真分析--多种案例操作步骤--案例代码分享

    专题一:机器人参数化建模与仿真优化设计  2022年10月15日--10月16日  直播 2022年10月22日--10月23日  直播 专题二:软体机器人结构设计与仿真分析    2022年10月2 ...

最新文章

  1. 学java培训开发需要多少钱
  2. P4300-[AHOI2006]上学路线【网络流,最短路】
  3. 三、fs文件操作模块
  4. 计算机网络OSI模型、TCP/IP模型与5G协议
  5. python esp8266_浅谈MircoPython---ESP8266
  6. Java Socket缓冲区
  7. Android高级模糊技术
  8. OSPF特殊区域及LSA类型详解
  9. 智慧医院建设方案_【聚焦医改】安泰创新智慧医院建设方案惊艳中国医院院长大会!...
  10. 性能测试adb常用命令
  11. 夜神模拟器安装drozer
  12. 网线水晶头接法图解8根线芯顺序排序图示
  13. 更新三转的skills.txt
  14. 百度地图使用,以及一些api
  15. BootStrap(day05)
  16. Appium架构介绍与环境安装
  17. python中回车用什么表示_解释stdscr中的“ENTER”键(Python中的curses模块)
  18. Total Command快捷键大全
  19. 微服务(四)——统一网关
  20. Go全局唯一ID选型集合

热门文章

  1. 多功能照片图片处理器小程序源码_支持流量主
  2. 升级版授权系统+盗版追踪+域名IP双授权+在线加密系统
  3. 三分钟撸完前后端crypto-js加解密,你学废了吗?
  4. HTTPS的七个误解(译文)
  5. jquery监听窗口大小改变事件jquery.resizeend
  6. 流量劫持 —— 浮层登录框的隐患
  7. Swift中文教程(四) 集合类型
  8. 打印样式CSS的技巧和要点
  9. php:global变量解析 / function 的作用域
  10. shell脚本打开一个新终端并运行指定脚本