踩坑记录:Blogger 主题保存失败?排查 b:skin CDATA 注释中的 HTML 标签冲突

1 min read · 230 words

这篇文章写给那些在修改和保存 Blogger 主题时,发现线上页面迟迟不生效、备受折磨的开发者。今天分享一下我亲身经历的 Blogger 主题保存失效问题,以及我是如何不被 UI 的“保存成功”提示欺骗,迅速定位并解决这个坑的。

当时我正在整理 Blogger 的 theme.xml 文件,修改 <b:skin> CDATA 块内部的 CSS 注释。为了说明 pre/code/div 的样式定义,我顺手在注释里写了一句:/* pre / code 块使用 <pre>, <code> 标签处理 */。修改完成后点击保存,结果发现博客前台完全没有变化。

异常现象

诡异的是,Blogger 后台 UI 明确弹出了“保存成功”的提示。但当我直接请求(fetch)线上页面查看源码时,发现依然是修改前的旧主题代码。等了 5 分钟,甚至换了台电脑用无痕模式访问,依然显示旧代码。Google 的“保存成功”弹窗有时候就像个没有灵魂的复读机,千万别信它。直接对比线上源码的大小才是最靠谱的。此时的情况是:UI 假装成功,但后端实际上发生了 Silent Reject(静默拒绝)。

运行环境

  • 平台:Blogger (Google Blogspot)
  • 目标文件:theme.xml
  • 修改位置:<b:skin><![CDATA[...]]> 块内部 of CSS 注释 (/* ... */)

尝试过但失败的排查方向

  • 重新手动上传:尝试直接重新上传整个 XML 文件,依然被无视。
  • 等待 5 分钟缓存刷新:以为是 CDN 缓存延迟,干等了半天,线上源码毫无变化。
  • 换设备无痕模式 Fetch:怀疑是本地浏览器缓存作祟,换了完全干净的环境测试,依然只展示旧主题。

最终解决方案

虽然深层原因有待进一步考证,但目前定位到的根本原因如下:Blogger 的 SkinVariables 解析器在处理 CDATA 内部的 CSS 注释时,似乎把注释里包含的 <pre> 和 <code> 误判成了真实的 HTML 元素。在尝试解析时,后端抛出了 InvalidVariableException。我最终的解决方案非常简单粗暴:直接删掉 CSS 注释中所有的原始 HTML 标签。去掉尖括号(< >),只保留纯文本的 pre 和 code。修改后再次保存,修改瞬间同步到了线上。

代码对比

<!-- Before (触发 silent reject) -->
/* pre / code 块使用 <pre>, <code> 标签处理 */

<!-- After (正常保存并生效) -->
/* pre / code 块处理 */

验证结果与当前状态

修改并重新上传主题后,线上页面的源码大小从 286,391 bytes 正常变更为 294,194 bytes。同时,我也亲自验证了 SESS140 5 sentinel 已经成功部署到线上。当前状态:Fixed(已解决)

写在最后

如果你也遇到了 Blogger 主题保存不生效的诡异问题,建议首要排查 <b:skin> CDATA 内部的 CSS 注释。极大概率是因为你在注释里无意间写了 <pre>、<code> 或 <div> 这类带尖括号的 HTML 标签,导致后端的解析器直接崩溃。先把注释里的尖括号删掉,再重新上传试试!

Category Coverage Notice

This article follows our label-specific editorial criteria. Details:

ToolSignal Pro Editorial

ToolSignal Pro는 AI·IT·소프트웨어 트렌드를 다루는 종합 IT 인사이트 매거진입니다.

이전 글 다음 글