惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

栖童の小站

中兴微ZX296716机顶盒TTL救砖全攻略 | 栖童の小站 闲鱼副业之行:在机顶盒救砖中,窥见人性的温差 | 栖童の小站 CMCC RAX3000QY路由器TTL刷机与OpenWrt解锁全记录 | 栖童の小站 晨星9385芯片设备免拆包自修改教程 | 栖童の小站 小众云服务商深度测评:小兔互联、初七云、星辰云对比 | 栖童の小站 我的2025:在破除幻象、划定边界与坚守内心的一年 | 栖童の小站 闲鱼求职骗局实录:我是如何识破假冒京东HR | 栖童の小站 “大仙”是如何操控你的:亲历东北出马仙骗局与背后的恐惧营销心理学 | 栖童の小站 未成年网络暴力观察:从劝诫到被“人肉”的反思 | 栖童の小站 卸任版主后的身份枷锁:虚拟社交中的友谊与边界 | 栖童の小站 Clarity主题深度定制指南 | 栖童の小站 从Hexo到Nuxt:我的小站重构与品牌升级之路 | 栖童の小站 在爱恨之间:我的人际关系修复与挣扎 | 栖童の小站 信仰的见证:当基督徒的行为违背圣经 | 栖童の小站 版主生涯的回忆:在deepin论坛的日子 | 栖童の小站 从耕种到秋收 | 栖童の小站 当田园牧歌遭遇田埂上的贪婪 | 栖童の小站 芜湖散记:江畔的温柔与遗憾 | 栖童の小站 零成本自建网站统计:在Vercel上部署Umami完全指南 | 栖童の小站 童年的两面:简单的快乐与沉重的烙印 | 栖童の小站 家庭阴影与校园霸凌的自愈 | 栖童の小站 公共澡堂体验:记录一次北方乡下的专业搓澡 | 栖童の小站 如何打造高效的团队 | 栖童の小站 Linux系统Git使用指南:从本地仓库创建到远程仓库推送 | 栖童の小站 Hexo Butterfly主题进阶美化:添加FPS显示、节日弹窗与评论提示 | 栖童の小站 告别手动编译:利用GitHub Actions自动化部署你的Hexo博客 | 栖童の小站 Linux音频修复:解决前置耳机及麦克风插孔无声方案 | 栖童の小站 从零搭建Hexo静态博客:环境配置、主题安装到部署上线完全指南 | 栖童の小站 解决Debian包格式兼容:从zst到xz的手动转换与重打包教程 | 栖童の小站 Debian系统编译Linux内核deb包:从编译到打包安装全流程 | 栖童の小站 老爷机复活指南:Linux Mint Xfce 轻量系统安装与优化全流程 | 栖童の小站
一次网站性能翻车实录:滥用SWPP插件导致的用户体验灾难与修复 | 栖童の小站
栖童, sweetcandymini@foxmail.com · 2025-11-30 · via 栖童の小站

开篇

在使用HexoSolitude主题时,我偶然看到了博主叶泯希的一篇教程,其中提到通过添加SWPP(Service Worker Progressive Plugin)可以显著提升博客的访问速度。出于对性能优化的追求,我毫不犹豫地进行了配置。然而,这个决定却为我后续的维护工作带来了意想不到的困扰。

一、痛苦的开始

某天,纸鹿突然在群里艾特我,并附上了我站点的截图。他反馈说,我的文章更新在他那边无法正常显示。

旧主题内容
旧主题内容
首页无法正常显示
首页无法正常显示
2024-11-29 19:17:18
纸鹿

唉,SW。

纸鹿

@栖童 SW把你首页的文章更新都吞掉了。

栖童

更换主题之后一直没弄SWPP。

栖童

@纸鹿 Hexo时期弄的,这玩意残留这么大吗?

纸鹿

之前的文章有写过滥用 Service Worker + CacheStorage 的后果。

随后群友天翔也在群内发了很多关于SWPP的说明与讲解。

SWPP说明
SWPP说明

原来,SWPP虽然能通过缓存机制加速页面加载,但如果配置不当或更新机制不完善,很容易导致用户端缓存无法及时更新。尤其当博客内容频繁更新或主题结构发生变化时,旧的Service Worker可能会继续拦截请求,返回过时的静态资源,从而出现页面显示异常、文章不更新等问题。

二、解决方案

为了解决这个问题,我写了一个自毁SWPP的 S 脚本,以解决显示旧内容的问题。

ts
// 清理 Service Worker 和缓存 (仅在客户端环境下执行)
	if (import.meta.client) {
		// 清理 Service Worker
		if ('serviceWorker' in navigator) {
			navigator.serviceWorker.getRegistrations().then(function(registrations) {
				// 注销所有已注册的 Service Worker
				for (let registration of registrations) {
					registration.unregister();
					console.log('Service Worker 已注销: ', registration.scope);
				}
			});
		}
		
		// 可选:清除所有缓存存储 (CacheStorage)
		if ('caches' in window) {
			caches.keys().then(function(cacheNames) {
				cacheNames.forEach(function(cacheName) {
					caches.delete(cacheName);
					console.log('缓存已删除: ', cacheName);
				});
			});
		}
	}

但群友御守和天翔指出:已经加载了Service Worker的页面,根本运行不到这段脚本(该脚本部分用户有效)。

目前我已经在各大站点群组以及个人的QQ发布通知,并在我个人的社交媒体发布了手动清理SWPP的方法。

SWPP清理
SWPP清理

清理方法如下:

  1. 打开开发者工具在您的博客页面上,按 F12 键打开开发者工具(或右键选择“检查”),确保页面已加载完成。
  2. 进入Application面板在开发者工具顶部标签栏中点击 “Application”(应用程序)。如未直接看到,可在“更多工具”菜单中查找。
  3. 卸载Service Worker在左侧栏展开 “Service Workers”,点击右侧的“Unregister”按钮。
  4. 清除站点数据在左侧栏点击 “Storage”(存储),在右侧找到并点击 “Clear site data”(清除站点数据)按钮。
  5. 强制刷新页面关闭开发者工具,按 Ctrl + F5(Windows/Linux)或 Cmd + Shift + R(Mac)重新加载页面。
  6. 移动端清理方法移动端浏览器通常可以在“设置” → “隐私与安全” → “清除浏览数据”中,勾选“缓存文件”和“网站数据”来清理。
  7. 若问题依旧如果按上述步骤操作后问题仍然存在,可以尝试在浏览器的设置中,进入隐私与安全选项,清除所有时间范围的“缓存的图片和文件”以及“Cookie 及其他网站数据”。这能更全面地清理缓存。

三、经验与反思

这次经历让我深刻意识到,技术选型不能仅追求性能提升,还需全面考虑其长期维护成本和潜在风险。SWPP 这类强缓存策略若滥用或疏于管理,反而会成为用户体验的“隐形杀手”。

四、结语

技术本身是工具,善用则利,滥用则弊。希望我的教训能为大家提供一些参考。