1.全页静态缓存就是将所有页面生成html静态页面,用户访问时直接访问,不经过php服务器解析的过程。这种方式在CMS系统中比较常见,比如dedecms;比较常见的实现方式是使用输出缓存:ob_start()*****要运行的代码*******$content=Ob_get_contents();****将缓存的内容写入html文件*****Ob_end_clean();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方法;connect($memcachehost,$memcacheport)ordie("Couldnotconnect");$memcache->set('key','缓存内容');$get=$memcache->get($key);//获取信息?>7.apache缓存模块apache安装后不允许缓存。如果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中配置:[apc]extension=php_apc.dllapc.rfc1867=onupload_max_filesize=100Mpost_max_size=100Mapc.max_file_size=200Mupload_max_filesize=1000Mpost_max_size=1000Mmax_execution_time=600perPHPpagerun**;*时间值(秒),默认30秒max_input_time=600;每个PHP页面接收数据所需的最大时间,默认60memory_limit=128M;每个PHP页面最大消耗内存,默认8M9,Opcode缓存我们知道php的执行过程可以如下图所示:首先将php代码解析成Tokens,然后编译成Opcode代码,***执行Opcode代码,并返回结果;因此,对于同一个php文件,*第一次运行时可以缓存其Opcode。下次执行这个页面时,会直接在缓存中找到opcode,直接执行上一步,不需要中间步骤。比较知名的有XCache、TurckMMCache、PHPAccelerator等。
