2026-01-10
修复了 Service Worker 中内容更新检测缓慢的问题,以及 Service Worker 与多语言功能冲突的问题。主要解决了更新检测延迟过长和不同语言版本内容被错误缓存的问题。
更新时间: 2026-01-10
sw.js 的 revalidateContent 函数):
sendMessageToClientsAsync 的延迟从 1 秒减少到 100ms,加快更新检测响应速度sendMessageToAllClients 而不是异步版本,进一步减少延迟sw.js 的 getCacheBustingUrl 函数):
URLSearchParams API 正确处理查询参数,确保在添加 cache-bust 参数时保留 lang 参数?lang=zh、?lang=en 等)被正确缓存和区分sw.js 的 fetch 事件处理器):
代码位置:
sw.js 第79-91行(getCacheBustingUrl 函数)sw.js 第479-484行(sendMessageToClientsAsync 函数)sw.js 第504-570行(revalidateContent 函数)sw.js 第432-437行(导航请求验证)URLSearchParams API 确保查询参数的正确处理lang 参数,确保 ?lang=zh、?lang=en 等不同语言版本被正确区分cache-bust 参数时不影响现有的语言参数sw.js - 修复内容更新检测和多语言参数处理2026-01-10
修复了页面锚点点击一次就失效的问题。主要原因是 jquery.nav.js 的 handleClick 方法中,当点击当前已激活的锚点时,滚动逻辑不会执行,但 e.preventDefault() 仍然会被调用,导致锚点点击失效。
更新时间: 2026-01-10
jquery.nav.js 的 handleClick 方法:
bindInterval() 总是被调用,防止事件监听器丢失_includes/footer.html 中的目录初始化:
onePageNav代码位置:
js/jquery.nav.js 第142-178行_includes/footer.html 第280-310行、第357行bindInterval() 总是被调用,防止事件监听器丢失修复的核心逻辑:
isCurrentSection 的判断提前,但不再阻止滚动执行bindInterval() 总是被调用js/jquery.nav.js - 修复 handleClick 方法,确保锚点点击始终有效_includes/footer.html - 优化目录初始化逻辑,支持多语言切换后重新初始化2026-01-10 04:48:14
针对多语言切换功能进行了SEO优化,使其对Google搜索引擎更加友好。主要解决了之前所有语言版本都在同一个URL上,通过JavaScript切换显示的问题,这种实现方式对搜索引擎不友好。
更新时间: 2026-01-10 04:48:14
为多语言文章添加了 hreflang 标签,告诉Google不同语言版本的对应关系:
zh - 中文en - 英文ja - 日文(URL参数使用 jp,但hreflang使用标准ISO代码 ja)ru - 俄文x-default 标签指向默认语言版本(中文)代码位置: _includes/head.html 第42-54行
更新时间: 2026-01-10 04:48:14
?lang=xx)://,会自动添加 https://)代码位置: _includes/head.html 第41-57行
更新时间: 2026-01-10 04:48:14
优化了语言切换功能,使其更符合SEO最佳实践:
?lang=xx)读取语言,而不是仅从hash读取history.replaceState 更新URL参数,不刷新页面<html lang="xx"> 属性代码位置: _includes/footer.html 第312-336行
更新时间: 2026-01-10 04:48:14
lang 属性zh)ja(虽然内部使用 jp)代码位置: _layouts/default.html 第2-8行
?lang=xx)而不是仅使用hash,搜索引擎可以更好地抓取和索引/2025/09/23/iron/?lang=zh语言参数:?lang=zh |
?lang=en |
?lang=jp |
?lang=ru |
1
2
3
4
5
<link rel="alternate" hreflang="zh" href="https://Zeusro.github.io/2025/09/23/iron/?lang=zh">
<link rel="alternate" hreflang="en" href="https://Zeusro.github.io/2025/09/23/iron/?lang=en">
<link rel="alternate" hreflang="ja" href="https://Zeusro.github.io/2025/09/23/iron/?lang=jp">
<link rel="alternate" hreflang="ru" href="https://Zeusro.github.io/2025/09/23/iron/?lang=ru">
<link rel="alternate" hreflang="x-default" href="https://Zeusro.github.io/2025/09/23/iron/?lang=zh">
为了确保hreflang标签使用正确的绝对URL,建议在 _config.yml 中将 url 更新为包含协议的完整URL:
1
url: "https://Zeusro.github.io" # 添加 https:// 前缀
或者如果使用自定义域名:
1
url: "https://yourdomain.com"
_includes/head.html - 添加hreflang标签和优化canonical标签_includes/footer.html - 优化语言切换JavaScript逻辑_layouts/default.html - 添加动态HTML lang属性