PHP缓存技术
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP缓存技术,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1623字,纯文字阅读大概需要3分钟。
内容图文
![PHP缓存技术](/upload/InfoBanner/zyjiaocheng/1138/a83112dccf3b4ef88a5a8b3ad98c1746.jpg)
为什么要用缓存?
缓存技术是提升系统性能最有效的办法。从操作系统的临时交换区,到CPU的一二级缓存,再到硬盘显卡,缓存技术几乎无处不在。具体到web应用上,从你在浏览器地址栏里键入地址并敲下回车开始,到页面呈现在你面前,这一次网络请求,沿途各处都用到了缓存技术。DNS,路由器,负载均衡设备,代理缓存,web服务器,浏览器等都以各种不同的形式在利用缓存技术。
缓存的作用
缓存作为一种存储介质,保存上一次耗时计算的结果,当下一次相同的请求到来时,直接返回保存的结果,不用再劳驾后端服务器做一次重复劳动。这样一来,后端服务器的压力减轻了,自然能提供更多的服务,这是典型的用空间换时间的做法。
缓存的特性
有效期是缓存的必要属性,当过了有效期后,缓存失效,重新计算结果并缓存,进入下一个时效周期。
缓存内容有变化时,需主动删除缓存。
PHP缓存技术
从大的方向来说,PHP缓存可分为编译类缓存、数据类缓存、基于反向代理的web缓存和页面静态化
- 编译类缓存
常用到的编译缓存工具有Apc,Accelerator,Xcache等,其原理是将脚本编译生成的opcode予以保存,如果脚本文件没有修改,下次不用重新编译(当然具体行为与配置有关)。
对于Apc来说,在php.ini中,将apc.ttl设置为0,则表示缓存条目永不超时,这意味着缓冲区满后,将无法缓存新条目,官方建议值为7200~86400。apc.stat选项表示是否启用脚本更新检查。默认值1表示apc每次请求脚本文件时都会检查脚本是否被更新,如果更新则重新编译并缓存,这样做对性能有影响。如果设置为0,表示不检查脚本是否更新,这样能大幅提高性能,但是假如脚本文件更新了,则需要重启web服务器或者fcgi进程,默认值为1。
Apc的这种用法称之为‘系统缓存’,还有一种用法称为‘用户数据缓存’,使用方式类似memcached,在此不再展开。
- 数据类缓存
此类缓存,主要指对变量、数据库查询结果等的缓存。实现方式可以有多种,比如以资源id为键,或者以查询语句为键来存储,承载缓存数据的载体则通常是memcached,redis和文件等。
- 基于反向代理的web缓存
如Nginx的proxy_cache和fastcgi_cache,Apache2的mod_proxy和mod_cache,以及Squid和Varnish。严格来说,这并不属于PHP缓存,但是鉴于和PHP结合比较紧密,权且归到一处来。
以Nginx举例,其有两种缓存机制,proxy_cache和fastcgi_cache,两者的区别:
proxy_cache作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态的。
fastcgi_cache作用是缓存fastcgi生成的内容,很多情况是php生成的动态内容。
proxy_cache缓存减少了nginx与后端通信的次数,节省了传输时间和后端带宽。
fastcgi_cache缓存减少了nginx与php的通信次数,更减轻了php和数据库的压力。
- 页面静态化
也可称之为页面缓存,可分为全页面缓存和页面静态片段缓存。主要用到的技术为输出控制。
ob_start (); ******要运行的代码******* $content = ob_get_contents(); ****将缓存内容写入html文件***** file_put_contents(‘abc.html‘,$content); ob_end_clean();
这样用户直接访问abc.html即可。页面静态片段缓存与此类似,可以用ob实现,也可以用ESI实现。还有一种情况,页面的大部分内容是静态的,但是有一小部分内容是动态的,这怎么办呢。这种情况我们把它归属于动态缓存技术,我们下次再讲。
原文:http://www.cnblogs.com/menma/p/4205050.html
内容总结
以上是互联网集市为您收集整理的PHP缓存技术全部内容,希望文章能够帮你解决PHP缓存技术所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。