memcached 混用 wincache php5.5,缓存总结 · thinkphp5 · 看云

## PHP四大加速缓存器opcache,apc,xcache,eAccelerator

eAccelerator,xcache,**opcache**(5.5默认 linux下安装php时记得加上 --enable-opcache ),apc(偏数据库缓存,分系统和用户缓存,不推荐5.5将弃之?)是PHP缓存扩展,

memcached缓存是数据库缓存扩展(APC比较偏向数据库缓存的),一般两者只有要安装其中一个即可

注意:([详情连接](https://www.chenweiliang.com/cwl-940.html))

实际测试中发现当Cache数量超过一定阀值的时候,APC的性能不如Memcache

opcache的性能优于其他几个缓存器

**一般会选择opcache+memcached|redis这个组合**

如果储存的量不大,tp 的file 缓存,和redis |memcached差不多。但是内存读取肯定要快。如果存储的值多,redis |memcached强大的i/o能力会强于 普通的文件读写

# [使用 OpCache 提升 PHP 5.5+ 程序性能](https://www.cnblogs.com/chunguang/p/5538093.html)(从编译提高)

作用是将PHP代码预编译生成的脚本文件 `Opcode` 缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗 省去了每次加载和解析 PHP 脚本的开销。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速PHP的执行(避免重复编译,减少 CPU 和内存开销)

![](https://img.kancloud.cn/fa/2a/fa2ab11242283efeb687203e1c282897_815x297.png)

php.ini 打开 zend\_extension="D:\\phpStudy\\php\\php-7.2.14\\ext\\php\_opcache.dll"

```

[opcache]

zend_extension = php_opcache.dll

opcache.enable = 0

opcache.memory_consumption = 128

opcache.max_accelerated_files = 10000

opcache.revalidate_freq = 60

; Required for Moodle

opcache.use_cwd = 1

opcache.validate_timestamps = 1

opcache.save_comments = 1

opcache.enable_file_override = 0

```

>[danger] 不要在编写调试代码中开启opcache,否则你会体会到你的增删改查不能即时同步的痛苦!

thinkphp的缓存:

~~~

'TMPL_CACHE_ON' => true, // 是否开启模板编译缓存,设为false则每次都会重新编译

'TMPL_CACHE_TIME' => 0, // 模板缓存有效期 0 为永久,(以数字为值,单位:秒)

'DB_FIELDS_CACHE' => true, // 启用字段缓存

'DATA_CACHE_TIME' => 0, // 数据缓存有效期 0表示永久缓存

'DATA_CACHE_TYPE' => 'File', // 数据缓存类型,支持:File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator

~~~

[静态文件缓存 和S函数动态数据缓存](https://www.cnblogs.com/dee0912/p/5223923.html)(从数据层面提高)

[thinkphp的静态缓存,数据缓存,快速缓存,查询缓存](https://www.cnblogs.com/chinalorin/p/5855386.html)

*****

### [**详细用法**](https://beltxman.com/archives/1835.html)

配置文件在目录: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进行缓存。

…更多操作的静态规则

)

~~~

格式的例子:[详情参考文档](http://document.thinkphp.cn/manual_3_2.html#html_cache)

~~~

'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}')#全局静态规则任何控制器和方法都适用

~~~

静态文件动态生成的方法: [方法](https://baijiahao.baidu.com/s?id=1611993886976390068&wfr=spider&for=pc)

**$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");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值