php 缓存 加速缓存
PHP四大加速缓存器opcache,apc,xcache,eAccelerator
eAccelerator,xcache,opcache(5.5默认 linux下安装php时记得加上 --enable-opcache ),apc(偏数据库缓存,分系统和用户缓存,不推荐5.5将弃之?)是PHP缓存扩展,
memcached缓存是数据库缓存扩展(APC比较偏向数据库缓存的),一般两者只有要安装其中一个即可
注意:(详情连接)
实际测试中发现当Cache数量超过一定阀值的时候,APC的性能不如Memcache
opcache的性能优于其他几个缓存器
一般会选择opcache+memcached|redis这个组合
如果储存的量不大,tp 的file 缓存,和redis |memcached差不多。但是内存读取肯定要快。如果存储的值多,redis |memcached强大的i/o能力会强于 普通的文件读写
使用 OpCache 提升 PHP 5.5+ 程序性能(从编译提高)
php.ini 打开 zend_extension="D:\phpStudy\php\php-7.2.14\ext\php_opcache.dll"
thinkphp的缓存:
1: 'TMPL_CACHE_ON' => true, // 是否开启模板编译缓存,设为false则每次都会重新编译 'TMPL_CACHE_TIME' => 0, // 模板缓存有效期 0 为永久,(以数字为值,单位:秒) 2: 'DB_FIELDS_CACHE' => true, // 启用字段缓存 3: 'DATA_CACHE_TIME' => 0, // 数据缓存有效期 0表示永久缓存 'DATA_CACHE_TYPE' => 'File', // 数据缓存类型,支持:File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator
静态文件缓存 和S函数动态数据缓存(从数据层面提高)
配置文件在目录:application-Common-Conf-config.php里设置默认配置项
静态文件缓存配置格式 静态规则是用于定义要生成的静态文件的名称 建议配置在application/module/Config/config.php
// 静态缓存配置 'HTML_CACHE_ON' => true, // 开启静态缓存 'HTML_CACHE_TIME' => 3600, // 全局静态缓存有效期(秒) 'HTML_PATH' => APP_PATH . 'Html/', //设置已经生成的静态页保存路径(默认HTML_PATH 即./Application/Html/) 'HTML_FILE_SUFFIX' => '.html', // 设置静态缓存文件后缀 'HTML_CACHE_RULES' => array( // 定义静态缓存规则 //静态规则是用于定义要生成的静态文件的名称 // 对商品进行缓存 // 'Product:plist' => 'Product/plist_{id}_{pid}', // 对单个操作进行缓存 // 'Index:index' => 'Index/index', // 对Index控制器的所有操作缓存 'Index:' => 'Index/{:action}_{id}', // 对Download控制器的所有操作缓存 'Download:' => 'Download/{:action}_{id}', // 对Product控制器的所有操作缓存并设置缓存过期时间为7200秒 'Product:' => array('Product/{:action}_{id}', '7200'), 'projectorSelect'=>array('{:module}/{:controller}_{:action}',86400), '*'=>array('{$_SERVER.REQUEST_URI|md5}'), ),
启用静态文件后每次都会检查访问的url(访问的url定义了静态规则)是否生成了静态文件则访问静态文件否则访问view模板文件在生成
格式:
静态地址分四种:
Return Array( '静态地址'=>array('静态规则','有效期',附加规则), 'ActionName'=>array('静态规则','静态缓存有效期','附加规则'), //第一种 定义所有的read操作的静态规则'read'=>array('{id}',60) 'ControllerName:'=>array('静态规则','静态缓存有效期','附加规则'),//第二种 定义全局的控制器静态规则,例如定义所有的User控制器的静态规则 'user:'=>array('User/{:action}_{id}','600') 'ControllerName:ActionName'=>array('静态规则','静态缓存有效期','附加规则'),//第三种 定义某个控制器的操作的静态规则,例如,我们需要定义Blog控制器的read操作进行静态缓存 'blog:read'=>array('{id}',0) '*'=>array('静态规则','静态缓存有效期','附加规则'),//第四种 定义全局的静态缓存规则,这个属于特殊情况下的使用,任何模块的操作都适用 例如:'*'=>array('{$_SERVER.REQUEST_URI|md5}'), 表示根据当前的URL进行缓存。 …更多操作的静态规则 )
格式的例子:详情参考文档
'read'=>array('{id}',60) #定义所有的read操作(方法)的静态规则 其中,{id} 表示取$_GET['id'] 为静态缓存文件名,第二个参数表示缓存60秒 'user:'=>array('User/{:action}_{id}','600')#定义所有的User控制器的静态规则(全局的控制器静态规则) {:action} 表示当前的操作名称 'blog:read'=>array('{id}',0)#定义Blog控制器的read操作进行静态缓存 'read'=>array('Think{id},{name}','60', 'md5') #即md5('Think'.$_GET['id']. ', '.$_GET['name']); 'empty:index'=>array('{module}_{:action}',0);#定义空控制器的静态规则 'User:index'=>array('User/{:action}',0);#定义空操作的静态规则 '*'=>array('{$_SERVER.REQUEST_URL|md5}')#全局静态规则任何控制器和方法都适用
静态文件动态生成的方法: 方法
$this->buildHtml('静态文件', '静态路径','模板文件');
参数一:静态文件,是指生成后的静态文件名,文件保存路径完整的就是:静态路径/静态文件。例如静态文件设置a/index.那么保存的路径就是项
目路径/Html/a/index.html(默认的静态路径在项目路径的Html文件夹下,没有可以自己创建)
参数二:静态路径,上面已经说明了默认的路径,3.0中可以在入口文件里加入参数来更改静态路径。
define('HTML_PATH', './');(将静态路径义为网站根目录)
参数三:模板文件,我感觉官方这个描述是不正确的,准确的来说应该是目标模块,就是需要生成静态文件的模块。格式:模块名:操作。比如要生成Index下的a方法为静态文件,那就是Index:a。如果为空则默认生成当前操作的静态文件。
下面三个是等效的??:
$this->buildHtml("index",'',"");
$this->buildHtml("index",'',"Index:index");
$this->buildHtml("index",'',"index");