教程吧
分享有用的知识

typecho 加快后台打开速度

介绍:文章提供了三种方法来加快 Typecho 后台打开速度。方法一是将官方最新日志数据缓存到本地文件中,有效期内加载缓存文件数据以加快后台打开速度;方法二是手动点击获取数据,避免自动获取并生成缓存文件;方法三是修改 Ajax 请求的超时时间为1秒以加快数据获取速度。通过这些方法,能有效减少后台打开时的卡顿等待时间。

每次打开 Typecho 后台时,都有明显的卡顿,在没有读取完成(官方最新日志)之前,点击控制台的任何链接都没反应,需要等待至少 3~5 秒钟,数据加载显示后,所点击的链接页面才会打开。于是,琢磨出本文档,把(官方最新日志)的数据缓存到本地文件中,在指定的有效期内,通过加载缓存文件的数据,加快后台打开速度。嗯,反正官方最新日志也不常更新。

涉及文件

admin/index.php
var/Widget/Ajax.php

方法一:

打开文件 admin/index.php 找到第 115 行的如下代码:

{hide}

 html = cache ? cache.getItem('feed') : '',

{/hide}

将以上代码替换为以下代码:

{hide}

html = '',

{/hide}

打开文件 var/Widget/Ajax.php 搜索找到 function feed() 将函数 {…} 内的所有代码,替换为以下代码(留意注释,以及按需修改):

{hide}

$cacheFilePath = __TYPECHO_ROOT_DIR__ . '/usr/cache/Typecho_feed_cache.json'; // 将官方最新日志数据存储在 usr/cache 目录的 Typecho_feed_cache.json 文件中,自行修改
    $cacheExpiration = 180*24*60*60; // 缓存半年,自行修改

    if (file_exists($cacheFilePath) && (time() - filemtime($cacheFilePath)) < $cacheExpiration) {
        $data = json_decode(file_get_contents($cacheFilePath), true);
        $this->response->throwJson($data);
    } else {
        $this->user->pass('subscriber');
        $client = Client::get();
        if ($client) {
            $client->setHeader('User-Agent', $this->options->generator)
                ->setTimeout(10)
                ->send('https://typecho.org/feed/');

            // 匹配内容体
            $response = $client->getResponseBody();
            preg_match_all(
                "/<item>s*<title>([^>]*)</title>s*<link>([^>]*)</link>s*<guid>[^>]*</guid>s*<pubDate>([^>]*)</pubDate>/is",
                $response,
                $matches
            );

            $data = [];

            if ($matches) {
                foreach ($matches[0] as $key => $val) {
                    $data[] = [
                        'title' => $matches[1][$key],
                        'link'  => $matches[2][$key],
                        'date'  => date('n.j', strtotime($matches[3][$key]))
                    ];

                    if ($key > 8) {
                        break;
                    }
                }
            }

{/hide}

注意:以上代码中,未对存储文件夹做是否可写的判断,所以,请确保文件夹可以创建缓存文件。

至此,在首次访问控制台时,官方最新日志数据会缓存到指定目录指定文件中,并在有效期内从缓存文件获取数据,加快后台打开速度。

方法二:

以上方法不能及时获取官方最新日志数据,需要在缓存文件有效期过后才能更新,可以使用以下方法:通过手动点击获取数据,避免打开页面时自动获取,也不需要生成缓存文件。

涉及文件:

admin/index.php

打开文件 admin/index.php 找到第 113 行的 JS 代码:

{hide}

 $(document).ready(function () {
        // 原有的声明变量代码,保持不变

        ul.html('<li><button id="loadData">点击读取数据</button></li>'); // 添加按键

        $('#loadData').click(function() { // 点击按键后,再执行原有的获取数据代码

            // 原有的获取数据代码,保持不变

        });
    });

{/hide}

至此,在打开后台时,不会自动获取数据,在点击按键后,再手动获取数据。

方法三:

涉及文件

var/Widget/Ajax.php

打开文件 var/Widget/Ajax.php 找到(两处)以下代码:

{hide}

setTimeout(10)

将以上代码的时间 10 改为 1

{/hide}

文章来源:https://www.xyjzy.com/archives/4646.html

赞(0)
文章名称:《typecho 加快后台打开速度》
文章链接:https://jcba123.com/article/10405
本站大部分内容来源于互联网搬运,仅限于小范围内传播学习和文献参考,如有侵权请联系我们删除。

评论 抢沙发

登录

找回密码

注册