zoukankan      html  css  js  c++  java
  • 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:phpStudyphpphp-7.2.14extphp_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函数动态数据缓存(从数据层面提高)

    thinkphp的静态缓存,数据缓存,快速缓存,查询缓存

    详细用法

    配置文件在目录: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");

  • 相关阅读:
    RTTI应用一例,改变窗体上所有控件的颜色(如果这个控件有Color属性的话)
    ddd
    终于懂了:TWinControl主要是Delphi官方用来封装Windows的官方控件,开发者还是应该是有TCustomControl来开发三方控件
    C++能在三个地方创造对象,而Delphi只有一个地方
    win32内存调用图
    让C#、VB.NET实现复杂的二进制操作
    谈谈华为(这篇文章比较有思想,对不对另说)
    How to configure CDB in Qt Creator(使用VC调试器)
    kbmMW 5.0.1发布了(跨全平台,包括Linux,可使用Win的高性能HTTPSys传输层,等等)
    FMXUI
  • 原文地址:https://www.cnblogs.com/lichihua/p/10725707.html
Copyright © 2011-2022 走看看