<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Service Worker on Time Friend</title><link>https://time-friend.com/zh/tags/service-worker/</link><description>Recent content in Service Worker on Time Friend</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 08 Jul 2025 15:30:00 +0000</lastBuildDate><atom:link href="https://time-friend.com/zh/tags/service-worker/index.xml" rel="self" type="application/rss+xml"/><item><title>如何让博客支持离线访问</title><link>https://time-friend.com/zh/archive/blog-architecture-service-worker/</link><pubDate>Tue, 08 Jul 2025 15:30:00 +0000</pubDate><guid>https://time-friend.com/zh/archive/blog-architecture-service-worker/</guid><description>&lt;p&gt;PWA 是个 buzzword, 说白了这个博客用到的 PWA 功能就两个: manifest.json 和 Service Worker. manifest.json 让浏览器知道&amp;quot;这是个应用&amp;quot;, Service Worker 让它在离线时也能工作.&lt;/p&gt;
&lt;p&gt;这篇重点说 Service Worker, 因为它比较复杂. manifest.json 很简单, 放在最后说.&lt;/p&gt;
&lt;h1 id="service-worker-是什么"&gt;Service Worker 是什么&lt;/h1&gt;
&lt;p&gt;简单说, Service Worker 是一个运行在浏览器背后的脚本. 它独立于网页, 在后台默默干活.&lt;/p&gt;
&lt;p&gt;你可以把它理解为&lt;strong&gt;浏览器和网络之间的中间人&lt;/strong&gt;. 正常情况下, 浏览器请求一个资源 (HTML, JS, 图片), 直接去服务器拿. 有了 Service Worker, 请求会先经过它:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;浏览器 → Service Worker → 网络 (或缓存)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Service Worker 可以决定: 这个请求是去网络拿, 还是直接从本地缓存返回, 还是两者都做.&lt;/p&gt;
&lt;p&gt;这个博客的 Service Worker 就是用 Workbox 生成的, 大约 5KB.&lt;/p&gt;
&lt;h1 id="有什么用"&gt;有什么用&lt;/h1&gt;
&lt;h2 id="离线访问"&gt;离线访问&lt;/h2&gt;
&lt;p&gt;这是最核心的功能. 如果用户访问过一次博客, Service Worker 会把静态资源缓存下来. 下次即使没有网络, 也能打开之前看过的文章.&lt;/p&gt;</description></item></channel></rss>