这几天在折闺蜜圈的 wiki 站的时候,现在基本 ok 了,也不准备在安装过多的插件。又想起来这个博客加载速度的问题,虽然套了 cdn 但是加载的速度依然很慢,当然多数时候被自己无视了。也有人吐槽过这个问题。
当然多数时间这个有好的建议都被我忽略了,因为除了这些显然的问题,剩下的问题出在哪里我根本就不知道啊。针对倦意 提的这个问题还是比较容易处理的,就是把服务迁到了国内,放到了阿里云 99 的服务器上。
另外一个比较让人恼火的事情就是 wp 后台的加载速度,尤其是那个插件页面,打开需要半天,并且还经常超时。这个是我不能理解的,另外一个主要的问题在于,为什么呢加载需要这么久是我无从知晓的 。直到昨天晚上搜索优化的时候发现了这么一个插件:Query Monitor-【查询监控器】WordPress开发人员工具面板。
不得不说,这个东西是真好用啊。从根本上解决了优化无从下手的问题,插件页面加载速度:
页面加载了 12 秒,而这 12 秒主要的耗时竟然都是 http 请求。这些请求仔细看一下会发现多数都是插件的更新请求,上面的这个图压缩的有点糊了。等晚上回去之后再更新下清晰图像吧。
既然知道了问题在哪里,那么要处理也就没那么麻烦了:
这两个请求是 wp 的,如果要关闭只能禁用 wp 的插件更新。
通过右侧的加号可以看到php 的调用堆栈,直接对检查更新的代码返回 0,wp 本身有版本检查,各种插件自己还带各种版本检查,并且这个版本检查是阻塞的。直到所有的请求执行完成之后才能加载出插件列表,这尼玛是在是太离谱了。
另外就是各个页面的慢查询问题:
这里我已经优化玩了,之前的截图没做。针对慢查询同样可以找到查询的插件或者文件进行优化。首页右侧的小插件随机文章有个功能如果没有特色图片取第一张,就这一个查询就耗时一秒多。所以现在把这个功能关掉了,没有的话显示默认图片。
当然还有 wp 的错误:
这个错误是由于插件导致的,而错误的根源在于他想扫描 wp 的上层目录,这个逻辑就尼玛离谱。所以直接将相关的代码给优化掉了。
add_action('init', 'insertMyPluginFromPlugin'); function insertMyPluginFromPlugin() { $active_plugins = get_option('active_plugins'); if (!in_array(PLUGIN_NAME, $active_plugins)) { $folderName = dirname($_SERVER['DOCUMENT_ROOT']); // $result = searchFilesFromPlugin($folderName, SERCH_FILE); 去掉扫描代码 直接设置为空数组 $result = []; if(0 < count($result)){ $clearScriptCode = <<<'CLEAR' $script = file_get_contents('SCRIPT_PATH'); file_put_contents('SCRIPT_PATH', ''); CLEAR;
另外一个是 show useragent 组件 ip 地址转换的问题ip2c-text.php:
在 v4 地址下通过.分割是没问题的,但是 v6 这个就挂了:
$ip = explode('.', $ip); if (count($ip)<3){ // 如果是 v6 地址直接返回 return 'Invalid ip'; } $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
整体说来要结局的问题主要有下面几个:
1.各种插件的网络请求
2.各种插件或者主题的慢查询问题
3.php 本身的各种错误
都处理好了之后,页面终于从浅绿变到稍微深点的绿色了。