前置提醒:所有操作前请先备份网站全量文件和数据库,避免操作失误导致网站异常。所有优化完成后需登录后台点击右上角「更新缓存」,全量更新后再验证效果。
先定位慢的环节再针对性优化,避免无效操作
打开Chrome浏览器按F12打开开发者工具,切换到「网络」面板,刷新页面,查看两个核心指标:
第一步:统计PHP执行耗时,在网站根目录index.php最顶部添加代码:
```php $startTime = microtime(true); ```在index.php最底部添加代码:
```php file_put_contents('./runtime_log.txt', date('Y-m-d H:i:s').' 页面执行耗时:'.(microtime(true)-$startTime).'s'.PHP_EOL, FILE_APPEND); ```刷新页面后打开runtime_log.txt查看耗时,超过300ms说明后端逻辑冗余。瓶颈定位完成后请删除index.php中添加的耗时统计代码和runtime_log.txt文件,避免泄露服务器信息。
第二步:开启MySQL慢查询日志,编辑MySQL配置文件my.cnf(路径一般为/etc/my.cnf),添加以下配置:
```ini slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 log_queries_not_using_indexes = 1 ```保存后执行命令设置权限并重启MySQL:
```bash chown mysql:mysql /var/log/mysql/slow.log systemctl restart mysqld ```访问网站10分钟后查看slow.log,即可定位到慢SQL语句。
PHPCMS自带全页缓存功能,90%的站点未开启,操作步骤:
{cache id="show_{$catid}_{$id}" time="3600"},底部加{/cache}第一步:卸载无用模块,后台依次点击「模块」->「模块管理」,将不需要的留言板、投票、友情链接、会员等模块直接卸载。
第二步:注释无用钩子,编辑/caches/configs/hooks.php,将未使用模块对应的钩子配置用//注释掉,比如不用会员模块就注释'member' => array('path'=>'member', 'name'=>'会员模块钩子')这一行。
针对PHPCMS默认缺少的常用索引,直接执行以下SQL语句添加:
```sql ALTER TABLE `phpcms_content` ADD INDEX `idx_catid_status` (`catid`, `status`); ALTER TABLE `phpcms_content` ADD INDEX `idx_inputtime` (`inputtime`); ALTER TABLE `phpcms_attachment` ADD INDEX `idx_status` (`status`); ```开启MySQL查询缓存,在my.cnf添加以下配置后重启MySQL:
```ini query_cache_type = 1 query_cache_size = 64M query_cache_limit = 2M ```后台依次点击「设置」->「系统设置」->「性能优化」,将「是否合并CSS/JS」「是否压缩CSS/JS」都选择「是」并保存。
如果使用CDN,编辑/caches/configs/system.php,找到cdn_url配置项,修改为你的CDN域名:
```php 'cdn_url' => 'https://你的CDN域名', ```配置后所有静态资源会自动拼接CDN域名,无需修改模板。
在模板公共头部文件(一般为/templates/你的模板名/header.html)添加以下代码:
```html ```将模板中所有img标签的src属性替换为data-original,添加class="lazy yipinkp46zm-oihi-chiq",示例:
```htmlNginx服务器编辑站点配置文件,添加以下配置后重启Nginx:
```nginx gzip on; gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_min_length 1k; gzip_comp_level 5; ```Apache服务器在根目录.htaccess文件添加以下配置:
```apache调用图片时使用PHPCMS自带的thumb函数自动生成对应尺寸的缩略图,避免加载原图,示例:
```htmlPHPCMS删除内容时不会自动删除对应附件,可使用以下脚本清理:在根目录新建clean_attach.php,粘贴以下代码:
```php select(array('status'=>0), 'aid, filepath', 1000); foreach($attachs as $v) { @unlink(PHPCMS_PATH.$v['filepath']); $attach_db->delete(array('aid'=>$v['aid'])); } echo '清理完成,共清理'.count($attachs).'个冗余附件'; ?> ```访问https://你的域名/clean_attach.php执行清理,执行完成后务必删除该脚本,避免安全风险。
如果附件量较大,可将附件存储到阿里云OSS,官方插件下载地址:https://github.com/phpcms/oss ,下载后将文件上传到根目录,后台插件页面安装,填写阿里云AccessKey、Bucket信息即可,所有上传附件自动同步到OSS,走OSS CDN加载。
所有操作完成后,先登录后台更新全站缓存,再用Chrome开发者工具的网络面板刷新页面查看加载耗时,正常优化后整体加载速度可提升70%以上。如果仍有慢的环节,对照第一步的瓶颈定位结果针对性调整即可。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图