$ pwd: ~ / 技术分享 / article/notionnext-remove-clerk-auth

NotionNext优化:移除 Clerk 组件以提升加载速度

// 本文详细介绍如何从代码层面彻底移除NotionNext的Clerk验证模块及个人中心部分相关页面,精简项目依赖和Next.JS生成的Javascript文件大小,显著提升博客在国内的加载速度和访问体验。

git-status.logreadonly
$ git log --oneline --stat
📁 category: 技术分享📅 updated: 2025-12-26🏷️ tags: 建站, Javascript, Notion
article/notionnext-remove-clerk-auth.mdreadonly
type
status
date
slug
summary
tags
category
icon
password
😀
本文详细介绍如何从代码层面彻底移除NotionNext的Clerk验证模块及个人中心部分相关页面,精简项目依赖和Next.JS生成的Javascript文件大小,显著提升博客在国内的加载速度和访问体验。
notion image

📝 为什么要移除Clerk和个人中心

原因一

我的NotionNext是采用yarn export方式静态部署在Vercel,也就是整体的博客是静态网页模式,所以并不需要个人中心以及Clerk之类的动态相关功能。同时我的博客也仅仅是一个对外信息交流的单向输出窗口,很传统的一种RSS博客,并不是一个UGC或者需要进行私域运营的网站,个人中心一类的功能对于我的博客来说没有任何的意义。

原因二

在引入Clerk包后,Next.JS生成的_app.js文件过大,且相当一部分代码是完全用不上的部分,影响博客的加载速度,尤其是博客在使用Cloudflare的CDN时,即使使用了SaaS回源方案,LCP和FCP的延迟还是相对较长,国内访问体验并不好。在之前已经进行过NotionNext优化的前提下(用Cursor帮我优化NotionNext博客SEO | Deep Router),Pagespeed Insights所提供的数据显示依旧有很大的优化空间,且指向的就是Clerk

📝 Clerk及个人中心相关功能移除指南

Clerk及个人中心所涉及的功能包括:登录、注册、管理面板这三个。主要步骤如下:

移除Clerk依赖

package.json中删除@clerk/localizations@clerk/nextjs依赖项。
涉及文件package.json,大约在51行左右,移除如下代码部分:

移除中间件部分的Clerk认证逻辑

涉及文件middleware.js ,移除clerkMiddleware导入,将authMiddleware替换为noAuthMiddleware,移除所有Clerk相关的路由保护逻辑。修改后文件为:

删除Clerk相关全局声明变量

涉及文件为lib/global.js ,移除useUserhook的使用,并将 isLoaded, isSignedIn, user状态设置为默认值 (false),以及移除Clerk相关的条件判断。
涉及代码部分为:

移除登录验证相关

行数40行至45

移除登录验证相关GlobalContext.Provider value

行数146行-148

删除账户验证相关页面及API

涉及文件包括:

🤗 优化效果

优化前:
NotionNext Clerk移除前
优化后:
NotionNext Clerk移除优化后
中间件部分体积缩小接近50%

📎 参考文章

 
💡
有关NotionNext安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~ 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
comments.logreadonly