PHP 网站及应用性能优化类,优化任意网站、应用和小程序性能。
Heal the world, make it a better place.
静态文件(JS / CSS / 图像),通过:
- 合并请求
- 压缩数据
- 公共 CDN
三种方式,减少文件体积和请求数,利用缓存和边缘节点:
- 加快网站速度
- 减少流量消耗
- 进而提升用户体验,提高搜索引擎评级
此外,本类还提供常用功能:
- 图片水印
- 批量文件内容替换
本类隶属于mtfCOM通用组件库,与之采用相同协议开源
include('mtfBetter.class.php');
$mtfBetter = new mtfBetter($conf); // 配置
$mtfBetter->handler($paths); // 要处理的文件路径列表
$conf = array(
'cache_dir' => 'cache', // 缓存文件夹路径
'cache_time' => 3600, // 缓存时间 秒
'task_num' => 3, // 最大并发数,超过不处理
'available_pic' => true, // 开启图片转webp
'watermark_path' => 'water.png', // 图片水印路径
'watermark_pos' => '', // 图片水印位置,可选left-top / left-bottom / right-top / right-bottom
'rules'=> array(// 批量文件内容替换,支持 * 通配符
'/view/*/h.html' => array(
'1' => '2',// 将view/a/h.html,view/b/h.html...中的 1 换成 2
)
)
);
除了rules
声明要替换内容的文件外,您可以在$paths
中传入文件列表
通常是 图片(jpg/jpeg/png)文件路径列表
类就会按照配置conf
中的规则,批量压缩,转格式和加水印
处理后的文件会放到cache_dir
中,缓存时间内,类将直接返回缓存
$path = array(
'static/pic/202011112129349625.png',// 图片将被压缩 或 webp 同时加水印
'static/pic/202011112129349626.png',// 对应{cache_dir}/static/pic/202011112129349626.png
'static/pic/202011112129349627.png',
)
注意类根据图片路径,在cache_dir
中保留目录结构
便于编写伪静态规则
,先判断cache_dir
相应文件是否存在
在cache_dir
不存在相应文件时,即插件尚未处理完成
时,加载原文件
不同运行环境的伪静态规则的编写,您可以参考下方示例
- shopXO 加速优化插件
- 进入 shopXO 后台,应用管理,上传
加速优化
插件 - 根据服务器运行环境,配置伪静态规则
- Apache · Kangle
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# ShopXO及ThinkPHP伪静态规则
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
# 加速优化插件伪静态规则
RewriteCond %{DOCUMENT_ROOT}/cache/optimizer/%{REQUEST_URI} -f
RewriteRule ^(.*.(jpg|jpeg|png))$ cache/optimizer/$1 [L,NC]
</IfModule>
- Nginx
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break; # ShopXO及ThinkPHP伪静态规则
}
if (-f $document_root/cache/optimizer/$uri){
set $rule_0 1$rule_0; # 加速优化插件伪静态规则
}
if (-f $document_root/cache/optimizer/$uri){
rewrite ^/(.*.(jpg|jpeg|png))$ /cache/optimizer/$1 last; # 加速优化插件伪静态规则
}
- IIS
<?xml version="1.0" ?>
<rules>
<!-- ShopXO及ThinkPHP伪静态规则 -->
<rule name="OrgPage_rewrite" stopProcessing="true">
<match url="^(.*)$"/>
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^(.*)$"/>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="index.php/{R:1}"/>
</rule>
<!-- 加速优化插件伪静态规则 -->
<rule name="Optimizer_rewrite" stopProcessing="true">
<match ignoreCase="true" url="^(.*.(jpg|jpeg|png))$"/>
<conditions>
<add input="{DOCUMENT_ROOT}/cache/optimizer/{REQUEST_URI}" matchType="IsFile"/>
</conditions>
<action type="Rewrite" url="cache/optimizer/{R:1}"/>
</rule>
</rules>
- 进入插件设置,开启静态文件、图片加速,保存即可生效