一个WEB页面从发起请求到最终显示请求结果,中间的各个节点是我们开发人员可以控制缓存的;因为最近看大家都在讨论 模板缓存 似乎都很入迷,
所以我出来浇盆冷水:别滥用、烂用缓存! 好的缓存技术是一系列缓存技术的组合应用
一、利用HTTP协议
模拟静态页面的 Header 控制 Last-Modify、Expires、Pragma 、Cache-Control 等 HTTP 头信息,利用 304 消息告诉浏览器继续使用本地缓存
一般这种缓存在动态页面的控制中使用几秒以内,适当的减轻服务器的负担
二、利用反向代理
这个在大型门户应用中会应用到。本质也是缓存了页面内容,只是分布到了多个输出服务器,分散了压力。
三、利用页面缓存 和 内容缓存
页面缓存和浏览器缓存的内容基本类似,只是在服务端缓存了,不用每次都重新渲染;适合于WEB首页等允许一定时间内不变的页面
(这种就是我们常见的模板缓存技术)
当然这个节点还有把内容直接生成静态页面的内容缓存方式
四、数据缓存
数据缓存,说白了就是相对数据存储而言,不是每次都从实际存储中获得最新的数据,而是有组织的把可以缓存的数据线保存在比较快速的物理设备上
如:内存。数据的组织、需求也是更具项目、页面等具体情况而详细制定的。
如果是用 MVC 开发模式的,有 在MODEL中封装了缓存的机制的,也有在 V 中设计了在 V与M沟通时,中间加入了 V 对M调用的缓存的机制
(我目前开发的项目中就是使用这个方式,好处是控制比较细腻,缺点是对V层开发人员有要求)
在这个节点可以利用的缓存工具很多,常见的有 Memache、APC 等 ... 说白了就是利用内存来换取时间 ...
五、Query-Cache
这是数据库查询缓存,由数据库自身的机制实现;开发人员或DBA主要是在配置数据库服务的时候,更具项目的应用情况,具体的配置。
(这里顺便搭一句:好的开发人员应该也是一个好的DBA)
我讲的比较浅显,只是希望大家能更加全面一点来看待WEB应用的开发 。。。
希望大家不要喷口水
[ 本帖最后由 terry39 于 2008-7-8 23:51 编辑 ]

我也来说两句 查看全部评论 相关评论