phar缓存 编译缓存 提高phar文件包加载速度
phar文件可以把用到的PHP文件全部打包在一个文件中,十分方便网站部署。但是单个的PHP文件可以使用opcache缓存(字节码缓存),以提升PHP的运行速度。那么PHAR文件包如何使用缓存呢。
这里需要进行配置(php.ini)
phar.cache_list
手册上的解释为:
Allows mapping phar archives to be pre-parsed at web server startup, providing a performance improvement that brings running files out of a phar archive very close to the speed of running those files from a traditional disk-based installation.
允许在web服务器启动时预分析映射phar存档,从而提供性能改进,使phar存档中运行的文件的速度非常接近于从传统的基于磁盘的安装中运行这些文件的速度。
这个功能只有在phar 2.0.0开始支持。当然目前你安装的PHP都是2以上的。phar 2.0.0 的发布日期为 2009-07-29。手册上的配置说明。
# in php.ini (windows):
phar.cache_list =C:\path\to\phar1.phar;C:\path\to\phar2.phar
# in php.ini (unix):
phar.cache_list =/path/to/phar1.phar:/path/to/phar2.phar
windows上多个文件使用分号,LINUX上使用冒号。
启用了cache_list后,重启php-fpm(或者可能是Apache)。
请确保opcache处于启用状态(php.ini):
opcache.enable=1
那么效果如何呢?用我的NILCMS框架做测试。环境:
PHP 7.2.25
NGINX 1.14.2
CentOS 7.7.1908
测试命令:ab -n 500 -c 5 域名
1.opcache未启用,cache_list未配置
Concurrency Level: 5
Time taken for tests: 7.665 seconds
Complete requests: 500
Failed requests: 0
Total transferred: 110500 bytes
HTML transferred: 21000 bytes
Requests per second: 65.23 [#/sec] (mean)
Time per request: 76.648 [ms] (mean)
Time per request: 15.330 [ms] (mean, across all concurrent requests)
Transfer rate: 14.08 [Kbytes/sec] received
2.opcache启用,cache_list未配置
Concurrency Level: 5
Time taken for tests: 1.406 seconds
Complete requests: 500
Failed requests: 0
Total transferred: 110500 bytes
HTML transferred: 21000 bytes
Requests per second: 355.62 [#/sec] (mean)
Time per request: 14.060 [ms] (mean)
Time per request: 2.812 [ms] (mean, across all concurrent requests)
Transfer rate: 76.75 [Kbytes/sec] received
3.opcache未启用,cache_list配置
Concurrency Level: 5
Time taken for tests: 7.588 seconds
Complete requests: 500
Failed requests: 0
Total transferred: 110500 bytes
HTML transferred: 21000 bytes
Requests per second: 65.89 [#/sec] (mean)
Time per request: 75.881 [ms] (mean)
Time per request: 15.176 [ms] (mean, across all concurrent requests)
Transfer rate: 14.22 [Kbytes/sec] received
4.opcache启用,cache_list配置
Concurrency Level: 5
Time taken for tests: 1.312 seconds
Complete requests: 500
Failed requests: 0
Total transferred: 110500 bytes
HTML transferred: 21000 bytes
Requests per second: 381.01 [#/sec] (mean)
Time per request: 13.123 [ms] (mean)
Time per request: 2.625 [ms] (mean, across all concurrent requests)
Transfer rate: 82.23 [Kbytes/sec] received
测试结果看
1.启用opcache后,对性能提升非常明显。
7.665 -> 1.406
7.588 -> 1.312
2.启用phar.cache_list后:对性能有一点点的提升。
7.665 -> 7.588
1.406 -> 1.312
来此加密:Let’s Encrypt 网页版本,获取SSL网站证书:https://letsencrypt.osfipin.com/。
所以最为通用的做法是使用opcache。
phar缓存 编译缓存 提高phar文件包加载速度的更多相关文章
- Web前端性能优化——如何有效提升静态文件的加载速度
WeTest 导读 此文总结了笔者在Web静态资源方面的一些优化经验. 一.如何优化 用户在访问网页时, 最直观的感受就是页面内容出来的速度,我们要做的优化工作, 也主要是为了这个目标.那么为了提高页 ...
- web前端性能优化,提升静态文件的加载速度
原文地址:传送门 WeTest 导读 此文总结了笔者在Web静态资源方面的一些优化经验. 如何优化 用户在访问网页时, 最直观的感受就是页面内容出来的速度,我们要做的优化工作, 也主要是为了这个目标. ...
- 【设计经验】3、ISE中烧录QSPI Flash以及配置mcs文件的加载速度与传输位宽
一.软件与硬件平台 软件平台: 操作系统:Windows 7 64-bit 开发套件:ISE14.7 硬件平台: FPGA型号:XC6SLX45-CSG324 QSPI Flash型号:W25Q128 ...
- 提高首屏页面加载速度,解决vue-cli打包后单个文件过大的问题
本教程是针对vue-cli3以上的版本,其实原理都大同小异,这个demo为vue-cli直接创建的项目,并在main.js中引入了echart.element-ui.lodash 首先看demo打包后 ...
- 在windows、linux中开启nginx的Gzip压缩大大提高页面、图片加载速度<转>
为了降低tomcat服务的压力,把页面上的图片采用windows版的nginx进行加载,由于有些图片比较大,加载特别的慢,所以在nginx中打开了gzip的压缩功能.加载图片的速度快了很多. 通过站长 ...
- 如何提高cocos2d-x-spine骨骼动画加载速度
下面分2点来说: 1. 时间消耗点:io和现场解析 解决方案:加载过的骨骼动画就不要每次重新加载,不要每次都去加载json文件和atlas,我推荐使用 static CCSkeletonAnimati ...
- jQuery实现图片预加载提高页面加载速度和用户体验
我们在做网站的时候经常会遇到这样的问题:一个页面有大量的图片导致页面加载速度缓慢,经常会出现一个白页用户体验很不好.那么如何解决这个问题呢?首先我们会想到的是提高服务器性能,使用静态缓存等手段来加快图 ...
- jquery实现图片预加载提高页面加载速度
使用jquery实现图片预加载提高页面加载速度和用户体 我们在做网站的时候经常会遇到这样的问题:一个页面有大量的图片导致页面加载速度缓慢,经常会出现一个白页用户体验很不好.那么如何解决这个问题 呢?首 ...
- 提高docker加载速度
由于国情,我们需要对配置一下docker的下载镜像,提高一下后续的加载速度. 使用vim编辑 /etc/docker/daemon.json, 增加如下内容. { "registry-mir ...
随机推荐
- window的pid为4的system进程占用80端口的解决办法
1.taskkill /pid 4 /f 无法终止进程占用80端口的进程时,运行 net stop http(若是第一次运行不能终止所有服务,继续运行该命令)
- learning java ProcessHandle 获取进程相当信息
Process p = rt.exec("notepad.exe"); ProcessHandle ph = p.toHandle(); System.out.println(&q ...
- 通过map文件找程序崩溃的代码行
一,配置vs 二,程序崩溃界面 // ConsoleApplication1.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include &l ...
- Hadoop hadoop 之hdfs数据块修复方法
hadoop 之hdfs数据块修复方法: .手动修复 hdfs fsck / #检查集群的健康状态 hdfs debug recoverLease -path 文件位置 -retries 重试次数 # ...
- ICEM-八分之一球体
原视频下载链接:https://yunpan.cn/c6seunjgbwRhJ 访问密码 c780
- LCT 总结
刚开始学lct花了一晚上研究模板,调出来就感觉不怎么难打了. 对板子的浅显理解: lct维护树形联通块,通过splay维护实链,可以把需要的路径变换到一颗splay上维护. splay中的关系只依赖实 ...
- 小福bbs-冲刺日志(第六天)
[小福bbs-冲刺日志(第六天)] 这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 后端努力完成大部分功能操作,前端UI完成大部分功能测试 作 ...
- C#中使用typeof关键字和GetType()获取类的内部结构(反射机制)
一.问题描述 java有反射机制,C#也有反射机制,在C#中typeof关键字用于获取类型的System.Type对象,该对象的GetMethods()方法可以得到类型中定义的方法对象的计集合,调用方 ...
- QT中显示动画
在QT中要显示GIF图片,不能通过单单的添加部件来完成.还需要手动的编写程序.工具:QT Creator新建一个工程,我们先在designer中,添加一个QLabel部件. 将QLabel拉成适当大小 ...
- 关于解决'\u'开头的字符串转中文的方法
如果字符串是”\u70ed\u95e8\u94ed\u6587\u63a8\u8350”这种形式的字符串: python3的解决办法:字符串.encode(‘utf-8’).decode(‘unico ...