IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    浅谈 WordPress 的速度优化 — 到底是谁拖垮了姐姐的 blog

    obaby发表于 2024-03-14 01:34:34
    love 0

     

    这几天在折闺蜜圈的 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 本身的各种错误

    都处理好了之后,页面终于从浅绿变到稍微深点的绿色了。



沪ICP备19023445号-2号
友情链接