---
title: "我删掉了站点的 90% 功能"
description: "一个博客需要什么？列表、文章、归档、搜索、订阅。其他东西我全删了，然后发现加载时间从 2.3 秒掉到了 380 毫秒。"
canonical_url: "https://www.kemiaosw.top/posts/deleted-90-percent"
---

> Index of every page on this site: [llms.txt](https://www.kemiaosw.top/llms.txt)

上一个版本的博客有 14 个页面、3 个第三方脚本、一套后台、还有评论系统。

我每个月写两篇文章。

这两件事之间存在严重的不匹配。

## 先算笔账

我把访问数据拉出来看了看：

<table>
<thead>
  <tr>
    <th>
      页面
    </th>
    
    <th>
      月访问
    </th>
    
    <th>
      占比
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      首页
    </td>
    
    <td>
      1,240
    </td>
    
    <td>
      41%
    </td>
  </tr>
  
  <tr>
    <td>
      文章详情
    </td>
    
    <td>
      1,510
    </td>
    
    <td>
      50%
    </td>
  </tr>
  
  <tr>
    <td>
      归档
    </td>
    
    <td>
      180
    </td>
    
    <td>
      6%
    </td>
  </tr>
  
  <tr>
    <td>
      其他所有页面
    </td>
    
    <td>
      90
    </td>
    
    <td>
      3%
    </td>
  </tr>
</tbody>
</table>

「其他所有页面」包括：分类索引、标签云、友链、关于、搜索页、404、两个我忘了当初为什么建的空页面。

它们加起来占了 3% 的流量，却占了我 70% 的维护时间。

## 删掉的清单

- **后台管理** —— 我用 Vim 写 markdown 比用任何后台都快
- **评论系统** —— 一年收到 4 条评论，其中 3 条是垃圾
- **访问统计的第三方脚本** —— 一个用了 8 年的静态博客，我不需要实时看板
- **搜索独立页** —— 搜索应该是弹窗，不该是一次页面跳转
- **分类页的独立布局** —— 它和标签页长得一模一样，为什么要写两遍
- **暗色模式的切换动画库** —— 我写了 40 行 `clip-path` 替代了它

## 保留的东西

删完之后剩下这些，一个都不能少：

```text
/                 首页，最新文章列表
/posts/[slug]     文章
/archive          归档
/categories       分类
/tags             标签
/links            友链
/about            关于
/rss.xml          订阅
```

九个路由。其中三个（分类、标签、归档）共用同一个列表组件——它们本来就是同一个东西的不同切片。

## 性能是删出来的

改动前后，用 Lighthouse 在同一台机器上测：

<table>
<thead>
  <tr>
    <th>
      指标
    </th>
    
    <th>
      改前
    </th>
    
    <th>
      改后
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      FCP
    </td>
    
    <td>
      1.8s
    </td>
    
    <td>
      0.4s
    </td>
  </tr>
  
  <tr>
    <td>
      LCP
    </td>
    
    <td>
      2.3s
    </td>
    
    <td>
      0.6s
    </td>
  </tr>
  
  <tr>
    <td>
      JS 体积
    </td>
    
    <td>
      284 KB
    </td>
    
    <td>
      41 KB
    </td>
  </tr>
  
  <tr>
    <td>
      首屏请求数
    </td>
    
    <td>
      23
    </td>
    
    <td>
      6
    </td>
  </tr>
</tbody>
</table>

没有做任何「优化」。没有拆包、没有预加载、没有 CDN 调优。

我只是不再发送用户不需要的代码。

```js
// 删之前：每个页面都加载完整运行时
import { Analytics } from '@heavy/analytics'
import { Comments } from '@heavy/comments'
import { AdminWidget } from '@heavy/admin'

// 删之后：什么都没有
// 静态 HTML + 一个 3KB 的搜索索引（首次搜索才加载）
```

## 一个反直觉的发现

删功能最难的从来不是技术，是心理。

每删一个东西，我都会想：「万一以后要用呢？」

后来我给自己定了个规则：**如果要重新加回来，成本低于 2 小时，那就先删掉。**

后台管理？重写要 8 小时，不删。评论系统？接第三方要 20 分钟，删。搜索页？改成弹窗要 1 小时，删。

这条规则让我删掉了大约 60% 的东西，而没有任何一个功能被真的加回来过。

## 结论

> 一个博客的核心是：**让人能读到文章。** 其他一切都是配角。

我现在写一篇新文章的工作流是：新建一个 `.md` 文件，写 frontmatter，写正文，`git push`。

三十秒后它就在线上了，带 RSS、带搜索索引、带 OG 图。

这才是写博客该有的摩擦系数。

## Sitemap

See the full [sitemap](https://www.kemiaosw.top/sitemap.md) for all pages.
