第四章 动态内容缓存
缓存的作用: 避免重复计算。使用缓存就需要考虑命中率问题。
缓存方式:
动态网页缓存: 缓存的内容是动态网页输出的Html。
动态内容缓存的具体方法: Smarty模板框架,Cakephp、Django、Zend等MVC框架,不管它们支持多么丰富的特性,有一点是相同的,都是将视图(View)和控制器(Controller)进行分离,这样可以让控制器有缓存控制权,从而提供丰富灵活的缓存控制方法。
局部无缓存: 允许在页面中指定一块包含动态数据的HTML代码,每次请求,动态数据都实时计算,然后和其余部分的缓存合成最终的网页。引入局部缓存后,动态网页控制器也要进行相应的修改,其目的是把无缓存区域对应的动态数据计算提到缓存检查之前,这样才可以保证每次都将实时计算后的结果输出到模板中。
静态化网页缓存: 直接访问缓存,不再需要经过动态程序。
局部静态化: 静态网页必须整页更新,它可以通过SSI(Server Side Include服务端包含,网页中include另外的网页)技术实现各个局部页面的独立更新。
shtml指令 <!--#include file="nav_head.htm"-->
网页支持SSI时,每次请求服务器都会通读网页内容,查找include标签,这会增加CPU开销,减少吞吐率。
缓存物理空间:
磁盘:
缓存文件过多时,不利于查找,这时可通过缓存目录分级来解决。IO开销大,如果磁盘同时还运行着数如据库这样的磁盘IO密集型应用,缓存文件的IO操作会存在延迟。
内存:
先将数据或对象缓存在内存中,这样加载缓存时没有任何磁盘IO开销。
例,借助PHP的APC模块将PHP运行时数据或对象缓存在内存中,APC停工了Key/Value的存储方式。
缓存服务器: 利用memcached,可以很容易通过TCP将缓存存储在其他服务器中。
第五章 动态脚本加速
缓存的目的是最大程度地跳过动态计算内容,然而,除非静态化访问,否则完全跳过动态内容的计算是不可能的。加载缓存需要动态运行脚本,可以通过提高动态脚本的运行速度来提高动态内容的处理。
opcode: 解释器完成对脚本代码的分析后,会生成可以直接运行的中间代码,也叫操作码(Operate Code)
解释(parse): 从程序代码到中间代码的过程叫解释,由解释器完成。
编译(compile): 编译型语言中,将程序代码生成中间代码的过程叫编译,由编译器完成。
编译器和解释器的本质区别:
解释器生成中间代码后,便直接执行它,所以运行时的控制权在解释器。
编译器则将中间代码进一步优化,生成可以直接运行的目标程序,但不执行它,这时控制权在目标程序,和编译器就没有关系了。
通过缓存opcode可以进行复用,从而加快脚本语言的执行速度。
应用层无法缓存opcode,可借助opcode缓存器来缓存opcode,如PHP的APC、XCache、eAccelerator等。
分享到:
相关推荐
H3CSE高性能园区网搭建,考试心得笔记,概括考试知识点,抓住重点赢得考试
H3CSE V1.0 构建高性能园区网络-笔记,根据个人需求可以深入了解一下,多方面理解基础知识点,如果有误可以和我说一下,及时修改,方便传播知识,共享知识。
web 开发笔记 超媒体是超文本(hypertext)和多媒体在信息浏览环境下的结合。它是超级媒体的简称。用户不仅能从一个文本跳到另一个文本,而且可以激活一段声音,显示一个图形,甚至可以播放一段动画[2]。 Internet...
H3CSE笔记-构建H3C高性能园区网络
高性能Mysql笔记,网易云课堂https://study.163.com/course/courseMain.htm?courseId=1003746011课程笔记
web学习笔记,web学习笔记,web学习笔记,web学习笔记,web学习笔记,web学习笔记
移动端web学习笔记,初步学习移动端网页的注意点,顶部搜索设置三栏自适应,轮播图如何设置以及媒体查询拓展,栅格系统,行列的设置以及各参数的作用移动端web学习笔记,初步学习移动端网页的注意点,顶部搜索设置三栏...
《高性能Mysql》第五章的读书笔记,记录的都是要点,以思维导图的方式呈现。
高性能Mysql学习笔记
web前端笔记是在培训机构培训过程中整理的一些笔记,仅供参考
webApi笔记.zip
Protege构建本体笔记
H3CSE完全笔记-构建H3C高性能园区网络
Web安全测试笔记,你值得拥有。包括各种测试的方法等等
JSWeb APIS笔记
高性能MySQL学习笔记.cpt
web前端基础知识学习笔记,内含有HTML、CSS、JavaScript的基础知识的总结,可以帮助大家学习
web笔记(js,html)
web前端.pdf 笔记