<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>博客网站调整 on farmer3-c Blog</title><link>https://farmer3-c.github.io/tags/%E5%8D%9A%E5%AE%A2%E7%BD%91%E7%AB%99%E8%B0%83%E6%95%B4/</link><description>Recent content in 博客网站调整 on farmer3-c Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 16 Feb 2026 23:46:44 +0800</lastBuildDate><atom:link href="https://farmer3-c.github.io/tags/%E5%8D%9A%E5%AE%A2%E7%BD%91%E7%AB%99%E8%B0%83%E6%95%B4/index.xml" rel="self" type="application/rss+xml"/><item><title>博客网站 自动更新</title><link>https://farmer3-c.github.io/posts/blog-auto-update/</link><pubDate>Mon, 16 Feb 2026 23:46:44 +0800</pubDate><guid>https://farmer3-c.github.io/posts/blog-auto-update/</guid><description>&lt;h2 id="问题-1如何让网站自动更新无需手动刷新"&gt;问题 1：如何让网站自动更新，无需手动刷新&lt;/h2&gt;
&lt;p&gt;问题描述： 添加新文章或变化后，需要手动刷新才能看到更新&lt;/p&gt;
&lt;p&gt;解决方案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;添加了 Jekyll Livereload 支持（ npm run start:live ）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配置了 Service Worker 自动更新检测&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;添加了 BrowserSync 作为可选方案
修改文件：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;package.json - 添加新脚本命令&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Gruntfile.js - 配置 BrowserSync&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="问题-2还是会有刷新确认按钮"&gt;问题 2：还是会有刷新确认按钮&lt;/h2&gt;
&lt;p&gt;问题描述： 网站检测到更新时，会显示 &amp;ldquo;Content updated. REFRESH&amp;rdquo; 按钮，需要手动点击&lt;/p&gt;
&lt;p&gt;解决方案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;修改 sw-registration.js ，移除手动刷新提示，改为直接自动刷新
修改文件：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;js/sw-registration.js - 移除 createSnackbar 调用，直接使用 location.reload()&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="问题-3网站不停自动更新无限循环"&gt;问题 3：网站不停自动更新（无限循环）&lt;/h2&gt;
&lt;p&gt;问题描述： 打开网站后不停自动刷新&lt;/p&gt;
&lt;p&gt;解决方案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;移除了自动刷新逻辑&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;改用 Stale-While-Revalidate 策略：先显示缓存，后台更新&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用户下次访问时自然看到新内容
修改文件：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;sw.js - 移除 UPDATE_FOUND 消息发送&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;js/sw-registration.js - 移除自动刷新&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="问题-4删除的文章仍在网站上显示"&gt;问题 4：删除的文章仍在网站上显示&lt;/h2&gt;
&lt;p&gt;问题描述： 从仓库删除的文章，网站上还能看到&lt;/p&gt;
&lt;p&gt;解决方案：&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="问题-1如何让网站自动更新无需手动刷新">问题 1：如何让网站自动更新，无需手动刷新</h2>
<p>问题描述： 添加新文章或变化后，需要手动刷新才能看到更新</p>
<p>解决方案：</p>
<ul>
<li>
<p>添加了 Jekyll Livereload 支持（ npm run start:live ）</p>
</li>
<li>
<p>配置了 Service Worker 自动更新检测</p>
</li>
<li>
<p>添加了 BrowserSync 作为可选方案
修改文件：</p>
</li>
<li>
<p>package.json - 添加新脚本命令</p>
</li>
<li>
<p>Gruntfile.js - 配置 BrowserSync</p>
</li>
</ul>
<h2 id="问题-2还是会有刷新确认按钮">问题 2：还是会有刷新确认按钮</h2>
<p>问题描述： 网站检测到更新时，会显示 &ldquo;Content updated. REFRESH&rdquo; 按钮，需要手动点击</p>
<p>解决方案：</p>
<ul>
<li>
<p>修改 sw-registration.js ，移除手动刷新提示，改为直接自动刷新
修改文件：</p>
</li>
<li>
<p>js/sw-registration.js - 移除 createSnackbar 调用，直接使用 location.reload()</p>
</li>
</ul>
<h2 id="问题-3网站不停自动更新无限循环">问题 3：网站不停自动更新（无限循环）</h2>
<p>问题描述： 打开网站后不停自动刷新</p>
<p>解决方案：</p>
<ul>
<li>
<p>移除了自动刷新逻辑</p>
</li>
<li>
<p>改用 Stale-While-Revalidate 策略：先显示缓存，后台更新</p>
</li>
<li>
<p>用户下次访问时自然看到新内容
修改文件：</p>
</li>
<li>
<p>sw.js - 移除 UPDATE_FOUND 消息发送</p>
</li>
<li>
<p>js/sw-registration.js - 移除自动刷新</p>
</li>
</ul>
<h2 id="问题-4删除的文章仍在网站上显示">问题 4：删除的文章仍在网站上显示</h2>
<p>问题描述： 从仓库删除的文章，网站上还能看到</p>
<p>解决方案：</p>
<ul>
<li>
<p>优化 Service Worker 策略，HTML 页面优先从网络获取</p>
</li>
<li>
<p>检测到 404 时自动从缓存中删除</p>
</li>
<li>
<p>更新缓存版本，清理旧缓存
修改文件：</p>
</li>
<li>
<p>sw.js - 实现智能缓存策略，导航请求优先网络</p>
</li>
</ul>
<h2 id="问题-5导航栏显示文章标题">问题 5：导航栏显示文章标题</h2>
<p>问题描述： 导航栏出现了文章标题（&ldquo;编译实践Lv1. main 函数&rdquo;）</p>
<p>根本原因：</p>
<ul>
<li>
<p>之前误将一篇博客文章放到了 css/ 文件夹</p>
</li>
<li>
<p>那篇文章有 layout: post ，被 Jekyll 当作页面处理</p>
</li>
<li>
<p>导航栏循环显示所有有 title 的页面
解决方案：</p>
</li>
<li>
<p>彻底解决方案： 硬编码导航栏，只显示固定页面（Home、About、Archive）</p>
</li>
<li>
<p>从 git 历史中彻底移除误放的文章</p>
</li>
<li>
<p>清理临时文件
修改文件：</p>
</li>
<li>
<p>_includes/nav.html - 硬编码导航链接，移除循环</p>
</li>
<li>
<p>删除了 css/2026-02-15-lv1-main-.md</p>
</li>
</ul>
<h2 id="问题-6about-和-archive-页面-404">问题 6：About 和 Archive 页面 404</h2>
<p>问题描述： 点击导航栏的 About 和 Archive 跳转到 /about.html 和 /archive.html ，显示 404</p>
<p>原因：</p>
<ul>
<li>
<p>博客使用 permalink: pretty 配置</p>
</li>
<li>
<p>正确的 URL 应该是 /about/ 和 /archive/ （带斜杠）
解决方案：</p>
</li>
<li>
<p>修改导航链接，使用正确的 pretty permalink 格式
修改文件：</p>
</li>
<li>
<p>_includes/nav.html - 链接改为 /about/ 和 /archive/</p>
</li>
</ul>
<h2 id="-最终效果总结">📊 最终效果总结</h2>
<table>
	<thead>
			<tr>
					<th>功能</th>
					<th>状态</th>
					<th>说明</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>导航栏</td>
					<td>✅ 正常</td>
					<td>只显示 Home、About、Archive</td>
			</tr>
			<tr>
					<td>About 页面</td>
					<td>✅ 正常</td>
					<td>访问 /about/</td>
			</tr>
			<tr>
					<td>Archive 页面</td>
					<td>✅ 正常</td>
					<td>访问 /archive/</td>
			</tr>
			<tr>
					<td>Service Worker</td>
					<td>✅ 优化</td>
					<td>Stale-While-Revalidate 策略</td>
			</tr>
			<tr>
					<td>缓存管理</td>
					<td>✅ 智能</td>
					<td>HTML 优先网络，404 自动清理</td>
			</tr>
			<tr>
					<td>本地开发</td>
					<td>✅ 支持</td>
					<td>npm run start:live 自动刷新</td>
			</tr>
	</tbody>
</table>
<h2 id="-所有修改的文件">🗂️ 所有修改的文件</h2>
<ol>
<li>package.json - 添加脚本命令和依赖</li>
<li>Gruntfile.js - 配置 BrowserSync</li>
<li>js/sw-registration.js - 移除自动刷新</li>
<li>sw.js - 智能缓存策略，多次版本更新（v1→v2→v3→v4→v5）</li>
<li>_config.yml - 更新 exclude 列表</li>
<li>_includes/nav.html - 硬编码导航，修复链接格式</li>
</ol>
]]></content:encoded></item></channel></rss>