2026年1月

前言

站长们估计或多或少都遇到过这个问题:明明在服务器里改好了Nginx的配置文件,但是刷新网站发现配置没生效。再比如:新加的域名访问不了、改的防盗链规则不生效…

我每次折腾程序的时候也会遇到这个问题,在宝塔面板配置好之后刷新页面,却发现配置没生效,反复检查没找到问题,忙叨半天最后才发现,原来是忘了让Nginx生效新配置。

为什么Nginx修改配置后不会实时生效?修改配置后,到底该用重启还是重新加载?这两个操作有什么区别?哪些修改必须重启,哪些只需要重载就够?

为了便于理解,以宝塔面板来举例,用这篇文章一次性解释完,以供后来者参考。

为什么Nginx修改配置后不会实时生效

这和Nginx的设计机制问题,这类服务软件的逻辑都是这样,为了保证服务稳定的设计,全部遵循一次读取,长期驻留的原则

Nginx在启动时会将配置文件解析并固化到内存中,后续的请求处理直接读取内存数据,以保证高性能,而不会每次都去读取磁盘上的文件。

所以,仅仅修改文件是不够的,必须通过命令通知主进程重新读取配置文件、验证语法、创建新的工作进程来加载新配置,从而实现平滑更新。

为什么要这么设计

包括我在内,很多站长会问:为什么不能设计成配置自动生效,这样多方便。答案也很简单:为了服务器的绝对稳定和高性能。分三点说明:

  1. 如果Nginx实时监听配置文件,每一次请求都要去读硬盘的配置文件,服务器的IO开销会暴增,网站访问速度变慢、性能大幅下降,这对高访问量的站点是致命的;
  2. 配置文件的修改可能不完整、有语法错误,如果实时生效,会直接导致Nginx运行出错、网站崩溃,风险极高!对新手来说更是如此;
  3. 一次性加载到内存,是所有高性能服务软件的标配,内存的读取速度非常快,能最大程度保证Nginx的运行效率。

重启(restart) / 重载(reload)

以宝塔为例,有两种方式让新配置生效。

方法一:重载配置(推荐)

宝塔面板上的重载配置按钮,对应到Linux命令行就是:nginx -s reload

这是日常修改配置的首选操作,也是最推荐的!它的作用是:通知正在运行的Nginx,去重读硬盘上的配置文件,把新的配置加载到内存中,平滑生效。

这个操作的核心优点:不中断服务、不影响用户访问。通过reload命令,进程会先验证新配置的正确性,仅在语法无误时启动新的工作进程来接管新请求,同时让旧的工作进程继续处理完现存连接后再优雅退出,从而在零停机的情况下完成配置更新,既保证了高可用性,又具备了出错回滚的安全机制。

方法二:重启Nginx服务

宝塔面板上的Nginx重启按钮,对应到Linux命令行就是:systemctl restart nginx

作用:先完全停止当前正在运行的所有Nginx进程,然后再重新启动Nginx,启动的同时加载新配置。

这个操作的核心特点:短暂中断服务。重启的瞬间,Nginx的所有进程都被关闭了,此时如果有用户访问网站,会出现访问失败、页面报错、加载超时的情况,直到Nginx重启完成。虽然重启的时间很短(一般毫秒级),但对有大量访问的站点来说,依然有影响,所以非必要不建议重启。

哪些修改,用重载就够?哪些修改,必须重启?

只需要重载 :仅修改业务规则类配置,比如:新增/修改 反向代理、新增/修改 防盗链、新增/修改 缓存策略、转发规则、后端服务地址gzip压缩、页面跳转/重定向。这些不涉及 Nginx 核心运行的进程、端口、模块。

必须重启 :修改核心运行相关配置, 比如:新增/删除 监听端口、新增/删除 核心模块、修改 工作进程数、进程绑定CPU、修改 用户权限、运行身份、修改 pid文件路径、日志文件的根路径。凡是涉及 Nginx 的进程、端口、加载的模块,这些配置都无法通过重载生效,只能重启。

前言

又到了废话的时候,前些年刚上高中的时候,想要建站,一开始买的星辰云的虚拟主机,后来换成了云服务器。第一次用云服务器,买到手才发现和虚拟主机完全不一样,他没有控制面板?

当时纯小白,问别人也没人理,后来第一个月的机器压根没用到,白白浪费了。再后来才知道了宝塔面板,宝塔也可以说是我的启蒙面板了

教程开始

首先你要拥有一台服务器,去哪里买无所谓,练手的话小厂便宜,大型业务的话大厂稳定。如果你愿意的话可以走我的推广链接,就当赞助我了。

点我购买

值得注意的是,新手不推荐买大陆地区的服务器,因为要备案,很麻烦

系统选择

购买服务器时会让选择操作系统,按照下述顺序选择,排名越靠前的,与宝塔面板兼容性越好

Debian12、Ubuntu22、Centos9、OpenCloud9、TencentOS Server4,AlibabaCloud 3、麒麟,统信,欧拉等Linux系统

这里使用Debian12举例

连接服务器

在控制台查看服务器的IP、用户名、密码、端口

记下这些信息后,使用SSH工具连接服务器,这里推荐使用堡塔多机管理

填写相关信息后保存并打开终端

安装宝塔

输入安装命令:

if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_latest.sh;else wget -O install_latest.sh https://download.bt.cn/install/install_latest.sh;fi;bash install_latest.sh ssl251210

执行后会出现确认提示,输入y并回车,接下来等着就行

安装成功

出现如下文字即为安装成功,将面板信息复制保存

安装必备组件

访问面板地址并登录,按照提示绑定账号

安装服务器必备组件,按需选择

如果你是学习使用,可以选择快速安装,如果是正式上线的运行环境,建议选择编译安装。

面板效果

前言

去年alist暴雷之后,就换成了社区维护的openlist,用了很久了,今天做一期教程,也避免后来者再去翻阅文档

安装教程

只介绍两种方法,宝塔docker一键安装和脚本安装。

安装宝塔面板的过程查看之前的文章

https://blog.chario.cn/wiki/27.html

宝塔docker

在后台左侧菜单栏点击docker,右侧点击立即安装。安装方式默认即可,如遇到安装失败,可尝试二进制安装

    安装完成后在docker商店的分类找到储存/网盘,下滑找到openlist,点击安装。

    在弹出的窗口填写需要的信息,没有域名的话就空着,CPU和内存限制根据实际情况调整。都填好之后点击确定,等待安装完成

    查看日志,安装好后点击已安装刷新一下就能看到了点击详情,可以查看后台的账号,然后复制设置openlist密码的命令到终端


    访问你设置的域名即可看到页面。没置域名的就访问你的IP:程序端口,如:127.0.0.1:15244

    登录之后会提醒你去设置存储,点击按钮进入设置页面

    openlist支持数十种储存方式,你可以任意选择

      一键安装脚本

      安装要求

      • 使用 systemd 的 Linux 系统
      • Root 权限
      • 已安装 curl, tar
      • 下载页面中列出的架构(openlist支持大多数架构,这点无需担心)

      执行安装脚本

      在确定你的系统支持后,执行下述命令:

      curl -fsSL https://res.oplist.org/script/v4.sh > install-openlist-v4.sh && sudo bash install-openlist-v4.sh

      在底部输入选项,因为我们要安装,所以填1,然后回车

      接下来会要求填写加速代理地址,可填可不填,我填的是https://gh-proxy.com/,你也可以填https://ghproxy.net/

      回车之后等待下载,下载的快慢取决你服务器的配置

      安装完成后会显示你的程序信息,务必截图/复制保存

      后续在终端输入openlist即可完成更新、卸载、重启等操作

      反向代理

      命令行安装的用户需要设置反向代理才能通过域名访问

      新建站点

      修改站点设置

      删除面板默认代码

      添加反向代理

        如需申请SSL证书,可先在SSL选项中申请证书,然后在设置反向代理。或者设置反向代理之后,关闭反向代理功能,申请SSL证书后再次开启代理。

        前言

        早在很久之前就开始建站,当时用的小鸡,所以存不了那么多数据,想到了云储存,但看了一圈价格都好贵。就在这时,我发现了一家可以免费提供云储存的大厂——又拍云

        52bc1770636882.png

        又拍云是我的第一个云储存,也是我截至今日使用最久的云储存。

        我相信它绝对是新站长值得一试的服务

        什么是云储存

        云存储就像是一个存放在互联网上的巨大、虚拟的U盘或硬盘。它让您无需购买和维护实体硬件,就能通过网络随时随地存储、管理和访问自己的数据。这些数据被安全地保存在由专业服务商运营的庞大服务器集群中,具备高可靠性、无限扩展性和成本效益。

        更多请参考云储存 | 百度百科

        为什么选又拍云

        又拍云联盟

        这就要提起又拍云有一个名为「又拍云联盟」的活动。

        即在页脚挂上又拍云的 LOGO(就像我的资源博客:知喜博客一样),便会每月赠送 10 GB 存储空间和 15 GB 流量。 而且直接折算为等额的代金券,按年发放,这相比其他的(白嫖)方案赠送额度更多,且更为方便。

        譬如倘若某一个月流量较少,某一个月流量较多,都可以共享这张代金券。 而若是按照腾讯云按月 10 GB 的制度,某个月没有用到 10 GB,就显得亏了,某个月不小心用超了,却又需要多付上一些钱财。

        操作流程

        申请

        访问又拍云官网[button color="info" icon="" url="https://console.upyun.com/register/?invite=bia88Lpsi" type=""]点我访问又拍云[/button],注册后在首页滑到底部找到又拍云联盟

        82a51770636913.png

        将下方代码添加到你的网站页脚

        <span>本网站由 <a href="https://www.upyun.com/?utm_source=lianmeng&utm_medium=referral"  target="_blank"><img src="https://s41.ax1x.com/2026/01/16/pZs14UI.png" width="53" height="23" style="fill: currentColor;"/></a> 提供 CDN 加速/云存储服务</span>

        然后点击申请,填写信息

        a8f21770636932.png

        最后等待审核就可以了

        其他

        说了一堆,但他肯定也有缺点。

        毕竟从体量上来说,不能和腾讯云、阿里云这些国内大厂商相比。因此部分程序不支持使用又拍云储存。

        还有一点就是我并没有找到设置超额自动停止服务的功能,当使用费用超过我的代金券时,它会变为欠款,而不是自动停止服务。

        当然对于访问量不大的站长来说,免费这一点就可以掩盖他的这点小小的缺点了

        在此插播一则广告~https://console.upyun.com/register/?invite=bia88Lpsi

        然后这里是咱的 又拍云返利链接,从这里注册并消费我会吃到回扣!(当然其实又拍云联盟赠送的量对于个人来说就基本够用了。赠送的额度不够用的时候,说明有很多人在关注你啦,就去找又拍云合作吧!)

        又拍云大使介绍

        主题标题居中

        打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可

        /*主题标题居中*/
        header.bg-light.lter.wrapper-md {
          text-align: center;
        }

        handsome 原生入站提示

        打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义输出body尾部代码即可

        <script>
        function kaygb_referrer(){
        var kaygb_referrer = document.referrer;
        if  (kaygb_referrer != ""){
        return "感谢您的访问! 您来自:<br>" + document.referrer;
        }else{
        return "";
        }}
        $.message({
            message: "为了网站的正常运行,请不要使用广告屏蔽插件,谢谢!<br >" + kaygb_referrer(),
            title: "网站加载完成",
            type: "success",
            autoHide: !1,
            time: "3000"
        })
        </script>

        评论一键赞、踩、打卡

        打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义JavaScript即可

        <!--评论 打卡、赞、踩 功能-->
        window.SIMPALED = {}; // 创建全局对象 SIMPALED,用于存放编辑器功能
        ​
        // 定义一个函数 a,用于在文本框中插入文字
        function a(a, b, c) {
          if (document.selection) {
            a.focus();
            sel = document.selection.createRange();
            c ? (sel.text = b + sel.text + c) : (sel.text = b);
            a.focus();
          } else if (a.selectionStart || "0" == a.selectionStart) {
            var l = a.selectionStart;
            var m = a.selectionEnd;
            var n = m;
            c
              ? (a.value =
                  a.value.substring(0, l) + b + a.value.substring(l, m) + c + a.value.substring(m, a.value.length))
              : (a.value = a.value.substring(0, l) + b + a.value.substring(m, a.value.length));
            c ? (n += b.length + c.length) : (n += b.length - m + l);
            l == m && c && (n -= c.length);
            a.focus();
            a.selectionStart = n;
            a.selectionEnd = n;
          } else {
            a.value += b + c;
            a.focus();
          }
        }
        ​
        window.SIMPALED.Editor = {
          daka: function() {
            var b = new Date().toLocaleTimeString();
            var c = document.getElementById("comment") || 0;
            a(c, "滴!学生卡!打卡时间:" + b, ",请上车的乘客系好安全带~");
        ​
            // 将光标移到文本最后
            if (c.setSelectionRange) {
              var len = c.value.length;
              c.setSelectionRange(len, len);
              c.focus();
            } else if (c.createTextRange) {
              var range = c.createTextRange();
              range.collapse(false);
              range.select();
              c.focus();
            }
          },
        ​
          zan: function() {
            var c = document.getElementById("comment") || 0;
            var yuluResponses = [
              " 这篇文章展现了作者深邃的思想和独特的观点,令人赞叹不已。 ",
              " 文章中的优美语言和精彩描写让人感受到一种心灵的震撼和触动,实在值得赞美。 ",
              " 作者以敏锐的洞察力和真挚的情感,将文字融为一体,这种写作技巧令人赞赏。 ",
              " 这篇文章展现了作者的才华和学识,无不让人对其赞美有加。 ",
              " 文章中的感人故事和深刻的寓意令人深深地感动和赞叹。  ",
              " 作者的文字流畅而富有节奏感,令人为之倾倒,实在是一篇令人赞美的佳作。 ",
              " 文章中的深邃思考和清晰逻辑令人对作者的才华赞赏不已。 ",
              " 这篇文章的独到见解和新颖观点,让人对作者的创意赞美有加。 ",
              " 作者运用生动的比喻和细腻的描写,让读者仿佛身临其境,实在是一种令人赞美的写作艺术。 ",
              " 这篇文章的深情笔触和真挚感受让人深深感叹,实在是一篇值得赞美的美文。 ",
            ];
        ​
            var randomIndex = Math.floor(Math.random() * yuluResponses.length);
            var randomResponse = yuluResponses[randomIndex];
            a(c, randomResponse);
          },
        ​
          cai: function() {
            var c = document.getElementById("comment") || 0;
            var yuluResponses = [
              " 我是来替大家批评博主的,我是来批评的,这篇文章的结构有点混乱,需要更好地组织和展开内容。博主多多像我学习啊! ",
              " 我是来替大家批评博主的,作者的表达能力有待提高,有些地方表述不够清晰,读者可能会感到困惑。博主多多像我学习啊! ",
              " 我是来替大家批评博主的,文章的语法错误较多,建议仔细检查并进行修改。博主多多像我学习啊! ",
              " 我是来替大家批评博主的,内容有些空洞,需要更多具体的例子或细节来支撑观点。博主多多像我学习啊! ",
              " 我是来替大家批评博主的,文章缺乏逻辑,有些段落之间的衔接不够自然。博主多多像我学习啊! ",
              " 我是来替大家批评博主的,作者的观点没有充分论证,需要更多的证据和理由来支持主张。博主多多像我学习啊! ",
              " 我是来替大家批评博主的,文章中出现了一些拼写错误和用词不当的情况,建议进行仔细校对。博主多多像我学习啊! ",
              " 我是来替大家批评博主的,语言表达过于简单,可以尝试使用更丰富的词汇和句式来提升文章质量。博主多多像我学习啊! ",
              " 我是来替大家批评博主的,这篇文章的主题不够突出,需要更好地明确中心思想。博主多多像我学习啊! ",
              " 我是来替大家批评博主的,文章缺乏吸引人的开头,建议引入更有趣的故事或引语来吸引读者注意。博主多多像我学习啊! ",
            ];
        ​
            var randomIndex = Math.floor(Math.random() * yuluResponses.length);
            var randomResponse = yuluResponses[randomIndex];
            a(c, randomResponse);
          },
        ​
          yulu: function() {
            var c = document.getElementById("comment") || 0;
            var yuluResponses = [
              " 有你在的日子才是我的日常。 ",
              " 夹在我女友与前女友与青梅竹马间的果然是修罗场! ",
              " 既然如此,就再努力一次吧。别在这里愁眉不展,也不要再自欺欺人,重新来过! ",
              " 比自己,比梦想更重要的东西永远都存在着... ",
              " 嘛,那又怎么样呢? ",
              " 自身不先改变的话,一切都不会改变。 ",
              " 比起有一百个朋友,不如有个比一百人还要重要的真心朋友。 ",
              " 我有在反省,但我不后悔。 ",
              " 要超越过去与悲伤,用坚强和笑容去开拓明天。 ",
              " 男人许下的诺言就一定要遵守。 ",
              " 没有回忆就去创造回忆,没有道路就去开辟道路。 ",
              " 我敬你是条汉子! ",
              " 不相信自己的人,连努力的价值都没有。 ",
              " 微风摇曳着窗帘,夕阳斜射入教室,在那里鼓起勇气告白的少年。即使现在也能清晰地回想起她的声音「当朋友,不行吗?」 ",
              " 就算是沉落地面的太阳,只要夜晚过了一定会再度升起,不管有什么痛苦或难过的事,跟今天截然不同的明天也一定会到来。 ",
              " 我的腿让我停下,可是心却不允许我那么做。 ",
              " 生活就像超级女生,走到最后的都是纯爷们。 ",
              " 我要拼,装上假牙也要拼! ",
              " 想要成为无论多么悲伤的时候,也能够漂亮微笑的人吧。 ",
              " 人们只是用好人来称呼对自己有用的人而以,不存在对所有人都有用的人。 ",
              " 烈焰中舞动的火花,将赐予邪恶异性交往以天罚。 ",
              " 无论乌云有多浓厚,星星也一定还在,只是暂时看不到了而已。 ",
              " 不相信人咬不到肚脐的,咬破肚脐去死如何? ",
              " 人一生会遇到约万人,两个人相爱的概率是.。所以你不爱我,我不怪你。 ",
              " 不管看到什么样的过去,都请不要迷失自己,不管你变成什么样子,我都是你的同伴。 ",
              " 心,可是很重的。 ",
              " 我爱上的人,称我为怪叔叔 ",
              " 慕君之心,至死方休。 ",
              " 虚伪的眼泪,会伤害别人,虚伪的笑容,会伤害自己。 ",
              " 若隐若现才是艺术! ",
              " 生我何用?不能欢笑。灭我何用?不减狂骄。 ",
              " 就是因为你不好,才要留在你身边,给你幸福。 ",
              " 呐,我们好像是,被宇宙和地球拆散的恋人似的。 ",
              " 你会梦游,我会磨牙,我们晚上一起去吓人吧! ",
              " 或许只需一滴露水,便能守护这绽放的花朵。 ",
              " 自己永远是孤单的,但你可以让其他人变得不孤单。 ",
              " 和哥哥的便当比起来夜空的薯片就像大便一样!只会给我大便的大便夜空是笨蛋~笨蛋~ ",
              " 我手中的魔法,是守护挚爱的力量,是坚定这个信念所必须的力量,我一定会拯救你的,无论在何时、何地。 ",
              " 要改变别人的心真是件很难办的事,不过改变自己要容易一点。 ",
              " 风筝的线你随时可以放开,只是别盼望我会回来。 ",
              " 与你的生命等价的东西,这个世界上根本没有。 ",
              " 君子可寓意于物,但不可留意于物。 ",
              " 最好的感觉,是有人懂你的欲言又止。 ",
              " 看似美好的东西,往往藏着陷阱。 ",
              " 爱,其实很简单,困难的是去接受它。 ",
              " 喜欢大胸只是本能,喜欢贫乳才是审美。 ",
              " 二次元什么的我本来是不感冒的,直到我的膝盖中了一箭。 ",
              " 努力是不会背叛自己的,虽然梦想有时会背叛自己。 ",
              " 面对就好,去经历就好。 ",
              " 我从小就害怕虫子 ",
              " 做不到的话,不过就是一死 。但是,赢了就能活下去,要是不战斗就赢不了。 ",
              " 既然认准这条路,何必去打听要走多久。 ",
              " 研表究明,汉字的序顺并不定一能影阅响读,比如当你看完这句话后,才发这现里的字全是都乱的。 ",
              " 少年心意,一如明月松间的青石流水,那些年里看到了,却不懂。 ",
              " 明明只是活着,哀伤却无处不在⋯⋯ ",
              " 少罗嗦,你还不如虫子呢! ",
              " 天空是连着的,如果我们也能各自发光的话,无论距离有多远,都能看到彼此努力的身影。 ",
              " 别人恋爱不成功,你连暗恋都不成功! ",
            ];
        ​
            var randomIndex = Math.floor(Math.random() * yuluResponses.length);
            var randomResponse = yuluResponses[randomIndex];
            a(c, randomResponse);
          },
        };

        打开Handsome主题目录下的 component/comments.php文件,找到并删除如下内容:

        修改成如下代码:

        <textarea id="comment" class="textarea form-control OwO-textarea" name="text" rows="5" placeholder="<?php _me("说点什么吧……") ?>" οnkeydοwn="if(event.ctrlKey&&event.keyCode==13){document.getElementById('submit').click();return false};"><?php $this->remember('text'); ?></textarea>
        <div class="OwO" style="display: inline;"></div>
        <div class="OwO" title="打卡" style="display: inline;" onclick="javascript:SIMPALED.Editor.daka();"><div class="OwO-logo"><span class="smile-icons"><i class="iconfont icon-daohanglan-01"></i></span><span class="OwOlogotext">打卡</span></div></div>
        <div class="OwO" title="语录" style="display: inline;" onclick="javascript:SIMPALED.Editor.yulu();"><div class="OwO-logo"><i class="fontello-pencil"></i><span class="OwOlogotext">语录</span></div></div>
        <div class="OwO" title="赞" style="display: inline;" onclick="javascript:SIMPALED.Editor.zan();"><div class="OwO-logo"><i class="glyphicon glyphicon-thumbs-up"></i><span class="OwOlogotext"></span></div></div>
        <div class="OwO" title="踩" style="display: inline;" onclick="javascript:SIMPALED.Editor.cai();"><div class="OwO-logo"><i class="glyphicon glyphicon-thumbs-down"></i><span class="OwOlogotext"></span></div></div>

        时光机头像圆形

        打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可

        /* 时光机圆形头像 */
        .img-square {border-radius: 50%;}
        .list-group-item .thumb-sm .img-square {border-radius: 5px;}

        logo 扫光

        打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可

        /* logo 扫光开始 */
        .navbar-brand{position:relative;overflow:hidden;margin: 0px 0 0 0px;}.navbar-brand:before{content:""; position: absolute; left: -665px; top: -460px; width: 200px; height: 15px; background-color: rgba(255,255,255,.5); -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(-45deg); -webkit-animation: searchLights 6s ease-in 0s infinite; -o-animation: searchLights 6s ease-in 0s infinite; animation: searchLights 6s ease-in 0s infinite;}@-moz-keyframes searchLights{50%{left: -100px; top: 0;} 65%{left: 120px; top: 100px;}}@keyframes searchLights{40%{left: -100px; top: 0;} 60%{left: 120px; top: 100px;} 80%{left: -100px; top: 0px;}}
        /*logo 扫光结束*/

        复制版权提示

        打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义JavaScript即可

        /* 复制成功提示代码开始 */
        kaygb_copy();
        function kaygb_copy() {
            $(document).ready(function () {
                $("body").bind('copy', function (e) {
                    hellolayer();
                });
            });
            var sitesurl = window.location.href;
            function hellolayer() {
                $.message({
                    message: "尊重原创,转载请注明出处!<br> 本文作者:XXX<br>原文链接:" + sitesurl,
                    title: "复制成功",
                    type: "warning",
                    autoHide: false,
                    time: "3000"
                });
            }
        }
        /* 复制成功提示代码结束 */

        彩色标签云及右栏数字

        打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义JavaScript即可

        /*彩色标签云代码开始*/
        let tags = document.querySelectorAll("#tag_cloud-2 a");
        let infos = document.querySelectorAll(".badge");
        let colorArr = ["#428BCA", "#AEDCAE", "#ECA9A7", "#DA99FF", "#FFB380", "#D9B999"];
        tags.forEach(tag => {
        tagsColor = colorArr[Math.floor(Math.random() * colorArr.length)];
        tag.style.backgroundColor = tagsColor;
        });
        infos.forEach(info => {
        infosColor = colorArr[Math.floor(Math.random() * colorArr.length)];
        info.style.backgroundColor = infosColor;
        });
        /*彩色标签云代码结束*/

        响应时间和访客总数

        将以下代码放到/usr/themes/handsome/function.php的最下面

        /*访问总量代码开始*/
        function theAllViews(){
        $db = Typecho_Db::get();
            $row = $db->fetchAll('SELECT SUM(VIEWS) FROM `typecho_contents`');
                echo number_format($row[0]['SUM(VIEWS)']);
        }
        /*访问总量代码结束*/
        /*响应时间代码开始*/
        function timer_start() {
        global $timestart;
        $mtime = explode( ' ', microtime() );
        $timestart = $mtime[1] + $mtime[0];
        return true;
        }
        timer_start();
        function timer_stop( $display = 0, $precision = 3  ) {
        global $timestart, $timeend;
        $mtime = explode( ' ', microtime() );
        $timeend = $mtime[1] + $mtime[0];
        $timetotal = number_format( $timeend - $timestart, $precision  );
        $r = $timetotal < 1 ? $timetotal * 1000 . " ms" : $timetotal . " s";
        if ( $display ) {
        echo $r;
        }
        return $r;
        }
        /*响应时间代码结束*/

        然后将以下代码放到/usr/themes/handsome/component/sidebar.php内,找到博客信息添加即可

        <!--访客总数代码开始-->
        <li class="list-group-item text-second"> <span class="blog-info-icons"> <i data-feather="users"></i></span>
        <span class="badge pull-right"><?php echo theAllViews();?></span><?php _me("访客总数") ?></li>
        <!--访客总数代码结束-->
        
        <!--响应耗时代码开始-->
        <li class="list-group-item text-second"> <span class="blog-info-icons"> <i data-feather="refresh-ccw"></i></span>
        <span class="badge pull-right"><?php echo timer_stop();?></span><?php _me("响应耗时") ?></li>
        <!--响应耗时代码结束-->

        全站字数统计

        将以下代码放到/usr/themes/handsome/component/sidebar.php的开头

        <?php
        //字数统计
        function allOfCharacters() {
        $chars = 0;
            $db = Typecho_Db::get();
        $select = $db ->select('text')->from('table.contents');
        $rows = $db->fetchAll($select);
            foreach ($rows as $row) { $chars += mb_strlen(trim($row['text']), 'UTF-8'); }
            $unit = '';
        if($chars >= 10000)     { $chars /= 10000; $unit = '万'; }
            else if($chars >= 1000) { $chars /= 1000;  $unit = '千'; }
        $out = sprintf('%.2lf %s',$chars, $unit);
            return $out;
        }
        ?>

        然后将以下代码放到/usr/themes/handsome/component/sidebar.php内,加到合适的位置

        <!--全站字数开始-->
        <li class="list-group-item text-second"><span class="blog-info-icons"><i data-feather="edit-2"></i></span>
        <span class="badge pull-right"><?php echo allOfCharacters(); ?></span><?php _me("全站字数") ?></li>
        <!--全站字数结束-->

        版权提示

        在主题文件post.php内,文章内容下方加上下面的代码

        <div style="padding: 10px;background: rgba(220, 220, 220, 0.22);font-size: 13px;border-left: 3px solid;text-align: left;">
        <span>本文作者:<a href="<?php $this->author->permalink(); ?>" rel="author"> <?php $this->author(); ?></a></span>
        <span>文章标题:<a href="<?php $this->permalink() ?>"><?php $this->title() ?></a><br></span>
        <span>本文地址:<a href="<?php $this->permalink() ?>"><?php $this->permalink() ?></a><br></span>
        <span>版权说明:若无注明,本文皆<a href="<?php $this->options->rootUrl(); ?>" target="_blank" data-original-title="<?php $this->options->title() ?>"><?php $this->options->title() ?></a>原创,转载请保留文章出处。</span>
        </div>

        总结

        通过以上美化方案,你可以让你的 Handsome 主题博客更加个性化和美观。这些功能大多是我自己也在用的。你可以参考截图和本站实际效果,根据自己的需求选择性地使用这些功能。 如果你在使用过程中遇到任何问题,欢迎在评论区留言讨论。同时,也欢迎你分享自己的美化心得,让我们一起打造更好的博客!