网站LOGO
静若安然
页面加载中
11月11日
网站LOGO 静若安然
记录个人学习生活和成长历程
菜单
  • 热评
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    Typecho 性能速度优化
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。

    Typecho 性能速度优化

    Akria · 原创 ·
    typecho · 博客主题
    共 3498 字 · 约 1 分钟 · 5284
    本文最后更新于2024年03月14日,已经过了241天没有更新,若内容或图片失效,请留言反馈

    启用gzip压缩

    • 在typecho的config.inc.php加入以下代码
    php 代码:
    /** 开启gzip压缩 */
    ob_start('ob_gzhandler');

    去除地址栏index.php

    • 在Typeho后台设置中地址重写选择wordpress风格
    • 设置伪静态为typecho,如下
    php 代码:
    if (!-e $request_filename) {
    rewrite ^(.*)$ /index.php$1 last;
    }

    后台地址修改

    • 将admin文件夹重命名
    • 修改Typecho根目录下的config.inc.php文件,将define(‘\_\_TYPECHO\_ADMIN\_DIR\_\_’, ‘/admin/’);中的的admin改成新名称即可

    站点设置Https

    • 在配置文件中加入以下代码
    php 代码:
    /*站点设置https*/
    define('__TYPECHO_SECURE__',true);

    后端优化

    • php最好选择php7.0以上
    • php安装Opcache扩展,用于加速php速度
    • 启用Memcached/Redis缓存,这是一款Memcached缓存插件,用于Typecho缓存 TpCache

    创建页面缓存

    • 在Typecho根目录下创建f5\_cache.php
    • 添加以下代码并保存
    php 代码:
    <?php
    $nowtime=time();
    $pastsec = $nowtime - $_GET["t"];
    if($pastsec<600) {
        exit;
        //10分钟更新一次,时间可以自己调整
    }
    ob_start();
    //打开缓冲区
    include("index.php");
    $content = ob_get_contents();
    //得到缓冲区的内容
    $content .= "\n<span class="token punctuation">.</span>$nowtime<span class="token punctuation">.</span><span class="token string">"\">";
    //加上调用更新程序的代码
    file_put_contents("index.html",$content);
    if (!function_exists("file_put_contents")) {
        function file_put_contents($fn,$fs) {
            $fp=fopen($fn,"w+");
            fputs($fp,$fs);
            fclose($fp);
        }
    }
    ?>
    • 然后访问该文件显示博客主页,并在根目录下生成index.html文件
    • 在网站管理中设置默认文档优先级,将index.html放最前面即可

    绕过代理获取ip

    • 在配置文件中加入以下代码
    php 代码:
    //绕过 CDN 代理获取真实 IP
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
        $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
        $_SERVER['REMOTE_ADDR'] = $list[0];}

    修改gravatar头像为qq头像

    • 博客根目录/var/Typecho下Common.php文件内搜索(获取gravatar头像地址)或者大概位置为816行
    • 修改为以下代码
    php 代码:
    /**
        * 获取QQ头像,如果失败,获取Gravatar头像
        * 
        * @param string $mail 
        * @param int $size 
        * @param string $rating 
        * @param string $default 
        * @param bool $isSecure 
        * @return string
        */
        public static function gravatarUrl($mail, $size, $rating, $default, $isSecure = false)
         {
            $reg = "/^\d{5,11}@[qQ][Qq]\.(com)$/";
            if (preg_match($reg, $mail)) {
                $img    = explode("@", $mail);
                $url = "//q2.qlogo.cn/headimg_dl?dst_uin={$img[0]}&spec=100";
            } else {
                if (defined('__TYPECHO_GRAVATAR_PREFIX__')) {
                    $url = __TYPECHO_GRAVATAR_PREFIX__;
                } else {
                    $url = $isSecure ? 'https://sdn.geekzu.org' : 'https://gravatar.inwao.com';
                    $url .= '/avatar/';
                }
                if (!empty($mail)) {
                    $url .= md5(strtolower(trim($mail)));
                }
                $url .= '?s=' . $size;
                $url .= '&r=' . $rating;
                $url .= '&d=' . $default;
            }
            return $url;
        }

    修改文件上传路径

    • 打开以下文件var/Widget/Upload.php,修改上传目录即可
    php 代码:
    /**
     * 上传组件
     *
     * @author qining
     * @category typecho
     * @package Widget
     */
    class Upload extends Contents implements ActionInterface
    {
        //上传文件目录
        public const UPLOAD_DIR = 'usr/uploads';
    
        /**
         * 删除文件
         *
         * @param array $content 文件相关信息
         * @return bool
         */
        public static function deleteHandle(array $content): bool
        {
            $result = Plugin::factory(Upload::class)->trigger($hasDeleted)->deleteHandle($content);
            if ($hasDeleted) {
                return $result;
            }
    
            return @unlink(__TYPECHO_ROOT_DIR__ . '/' . $content['attachment']->path);
        }
    声明:本文由 Akria(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    现在已有

    1

    条评论
    我要发表评论
    1. 头像
      陶小桃Blog
      • 等级:Lv.2
      • 角色:访客
      • 在线:很久之前

      挺好,学习了

      · · · 北京-北京
    博客logo 静若安然 记录个人学习生活和成长历程 51统计 百度统计
    ICP 蜀ICP备2023037012号-1

    💻️ Akria 昨天 17:15 在线

    🕛

    本站已运行 7 年 77 天 19 小时 19 分
    静若安然. © 2017 ~ 2024.
    网站logo

    静若安然 记录个人学习生活和成长历程