phpMyAdmin 页面卡在 loading 状态主因是前端资源加载失败,常见于CDN依赖超时、字体跨域404、OPcache未启用或缓存头缺失;应禁用远程CDN、启用本地静态资源与OPcache,并配置Web服务器强制缓存静态文件。
phpMyAdmin 页面打开卡在 loading 状态
这是最典型的加载缓慢表现,通常不是后端响应慢,而是前端资源没加载完。浏览器开发者工具 network 面板里能看到大量 js、css、font 请求长时间 pending 或 200 但耗时 >2s。
- 默认安装的 phpMyAdmin 会从 cdn.jsdelivr.net 加载 jQuery、Bootstrap 等第三方库——国内访问极不稳定,经常超时或被重定向
- 字体文件(如
fonts/glyphicons-halflings-regular.woff2)若未本地化,每次都会触发跨域请求,且部分 CDN 已下线该路径 - 如果启用了
$cfg['EnableBZip2'] = true但服务器没装bz2扩展,压缩资源解压失败会导致 JS 报错中断执行
禁用远程 CDN 并启用本地静态资源
phpMyAdmin 自 5.0 起支持完全离线运行,关键在配置文件里关掉外链依赖。
- 编辑
config.inc.php,添加或修改:$cfg['EnableJSMinify'] = true;<br>$cfg['EnableGIS'] = false;<br>$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
- 确保
$cfg['LinkLengthLimit']不设得过小(如100),否则长 SQL 会强制截断并反复重绘 DOM,拖慢渲染 - 删除或注释掉所有类似
https://cdn.jsdelivr.net/npm/的 URL,改用内置副本:phpMyAdmin 的js/vendor/和css/vendor/目录已自带 jQuery、moment.js 等,只要不手动删掉就可用
nginx / Apache 下静态资源缓存失效
即使资源已本地化,若 Web 服务器没配好缓存头,浏览器每次都会发 If-None-Match 请求验证,看似“没下载”实则仍走网络往返。
- nginx 中对
.js、.css、.woff2文件加强制缓存:location ~* \.(js|css|woff2|ttf|eot|svg)$ {<br> expires 1y;<br> add_header Cache-Control "public, immutable";<br>} - Apache 用户需确认
mod_expires已启用,并在 phpMyAdmin 目录下添加:<IfModule mod_expires.c><br> ExpiresActive On<br> ExpiresByType application/javascript "access plus 1 year"<br> ExpiresByType text/css "access plus 1 year"<br></IfModule>
- 别忽略
favicon.ico:很多部署漏配它,而浏览器默认每页都请求一次,404 响应会卡住整个页面解析流程
PHP OPcache 未启用或配置过严
phpMyAdmin 是纯 PHP 文件堆叠,每个请求都要读取、编译上百个 .php 文件。没开 OPcache 时,CPU 花在重复编译上,页面首字节延迟明显。
- 检查
opcache.enable=1和opcache.enable_cli=0(CLI 模式不用开) -
opcache.memory_consumption至少设为128,phpMyAdmin 全量缓存约需 80–110MB - 避免设
opcache.revalidate_freq=0:开发环境可以,生产环境会导致改了配置不生效;设成60更稳妥 - 如果用了 Docker,确认容器内
php.ini和宿主机挂载的配置一致——常见坑是宿主机改了,容器里还是旧的
真正卡点往往藏在「看起来无关」的地方:比如字体文件 404 触发 JS 错误,导致表格渲染逻辑跳过;或者 OPcache 缓存了损坏的 opcode,重启 PHP-FPM 才恢复。遇到加载慢,先开 Network 面板看哪个资源最先挂住,再顺着查,比盲目调参数快得多。
立即学习“PHP免费学习笔记(深入)”;



















