当前位置: 首页 > 科技观察

PHP中的九大缓存技术

时间:2023-03-12 01:20:40 科技观察

1.全页静态缓存是将所有页面生成html静态页面,用户访问时直接访问,不经过php服务器解析的过程。这种方式在CMS系统中比较常见,比如dedecms;一种比较常见的实现方法是使用输出缓存:2.部分页面缓存这种方法是静态缓存页面中不经常变化的部分,而频繁变化的块不缓存,最后组装在一起显示;可以通过类似ob_get_contents的方式实现,也可以采用类似ESI的页面分片缓存策略,在动态页面中缓存相对静态的分片(ESI技术,请自行百度,这里不详述)。该方法可用于商城的产品页面;3、顾名思义,数据缓存就是缓存数据的一种方式;例如,当使用商品id请求商城的商品信息时,会包含店铺信息、商品信息等数据,此时可以将这些数据缓存在一个php文件中,文件名中包含商品id创建一个唯一的标记;下次有人要查看这个产品,先直接调用信息,不用去数据库查询;实际上,缓存文件中缓存的是一个php数组;Ecmall商城系统中使用该方法;4.查询缓存其实和数据缓存是一个思路,都是根据查询语句来缓存;将查询得到的数据缓存在一个文件中,下次遇到相同的查询时,直接先从这个文件中调出数据,不会再去查数据库;但这里的缓存文件名可能需要以查询语句为基点建立唯一标识;根据时间变化缓存,其实这不是真正的缓存方式;上述2、3、4缓存技术一般都是使用时间变化判断;即对于缓存文件,需要设置一个有效时间,在这个有效时间内,同样的访问会先取缓存文件的内容,但是如果超过了设置的缓存时间,就需要从中获取数据再次访问数据库并生成最新的缓存文件;比如我将我们商城的主页设置为每2小时更新一次;5、根据内容变化进行缓存这不是一个独立的缓存技术,需要结合使用;当数据库内容修改时,缓存文件立即更新;比如一个人流量大的商场,产品很多,产品表肯定比较大,这个表的压力比较大;我们可以缓存产品展示页面;商户在后台修改该商品信息时,点击保存,我们会同时更新缓存文件;那么买家在访问商品信息时,实际上访问的是一个静态页面,不需要再次访问数据库;试想一下,如果商品页面没有缓存,那么每访问一个商品,都需要去数据库查一次,如果有10万人在线浏览商品,服务器的压力会很大;6.内存缓存说到这里,大家可能首先想到的是Memcached;memcached是一个高性能的分布式内存缓存服务器。一般使用目的是通过缓存数据库查询结果来减少数据库访问次数,从而提高动态Web应用的速度和可扩展性。就是把需要缓存的信息缓存在系统内存中。当需要获取信息时,直接从内存中取出;比较常用的方法是key–>value方法;缓存。如果web加速需要外部缓存或squid服务器,需要在httpd.conf中设置。当然前提是在安装apache的时候要激活mod_cache模块。安装apache时:./configure–enable-cache–enable-disk-cache–enable-mem-cache8、phpAPC缓存扩展php有一个APC缓存扩展,windows下是php_apc.dll,需要先加载这个模块,然后在php.ini中配置:9.Opcode缓存我们知道php的执行过程可以如下图所示:首先将php代码解析成Tokens,然后编译成Opcode代码,最后Opcode代码是执行返回结果;所以,对于同一个php文件,第一次运行时可以缓存它的opcode,下次执行这个页面时,会直接找到缓存的opcode直接执行最后一步,不需要中间步骤。比较知名的有XCache、TurckMMCache、PHPAccelerator等。