<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Chrome on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/chrome/</link><description>Recent content in Chrome on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 15 Jun 2020 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/chrome/index.xml" rel="self" type="application/rss+xml"/><item><title>Chrome DevTools 实用技巧：前端调试 / 性能分析 / 网络抓包 / 移动端调试 / 自动化</title><link>https://liangweidonggood.github.io/p/chrome-devtools-practical-2020/</link><pubDate>Mon, 15 Jun 2020 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/chrome-devtools-practical-2020/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/chrome-devtools-practical-2020/image/cover.jpg" alt="Featured image of post Chrome DevTools 实用技巧：前端调试 / 性能分析 / 网络抓包 / 移动端调试 / 自动化" /&gt;&lt;h2 id="一为什么写这篇-devtools-实战"&gt;一、为什么写这篇 DevTools 实战
&lt;/h2&gt;&lt;p&gt;Chrome DevTools（F12）是&lt;strong&gt;前端工程师的&amp;quot;瑞士军刀&amp;quot;&lt;/strong&gt;——调试 DOM / CSS、抓包分析、性能 profiling、移动端调试、自动化脚本、Storage 调试……&lt;strong&gt;全在一个面板里&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;本文整理 &lt;strong&gt;7 大场景&lt;/strong&gt; 的实战技巧，&lt;strong&gt;所有操作都用 DevTools 自身能力&lt;/strong&gt;，&lt;strong&gt;不涉及任何&amp;quot;内容解锁 / 反爬&amp;quot;功能&lt;/strong&gt;。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;范围说明&lt;/strong&gt;：本文仅讨论 DevTools 用于&lt;strong&gt;前端开发&lt;/strong&gt;、&lt;strong&gt;性能优化&lt;/strong&gt;、&lt;strong&gt;网络分析&lt;/strong&gt;、&lt;strong&gt;自动化测试&lt;/strong&gt;等正当用途。DevTools 是浏览器内置调试工具，&lt;strong&gt;与&amp;quot;破解 / 反爬&amp;quot;无关&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="二场景-1dom--css-调试"&gt;二、场景 1：DOM / CSS 调试
&lt;/h2&gt;&lt;h3 id="21-实时改-css"&gt;2.1 实时改 CSS
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 打开任意网页
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 鼠标右键 → &amp;#34;检查&amp;#34;（或按 F12）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. Elements 面板左侧是 DOM 树
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 选中一个元素 → 右侧 &amp;#34;Styles&amp;#34; 面板是它的所有 CSS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5. 任意属性可以：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - 取消勾选 = 临时禁用
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - 双击值 = 临时改值
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - 加新属性 = 临时添加
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;实时改的样式&lt;strong&gt;只在你本地生效&lt;/strong&gt;，刷新页面会重置——&lt;strong&gt;这是验证 UI 调整的最快方法&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="22-改完记下来"&gt;2.2 改完记下来
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 右侧 Styles 面板 → 点击选择器链接
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 跳到 Sources 面板对应 CSS 文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 复制修改后的内容到本地项目
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="23-计算样式--box-model"&gt;2.3 计算样式 / Box Model
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Elements → Computed 面板：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 选中元素所有&amp;#34;最终生效&amp;#34;的 CSS（不是源码）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 包含继承值、用户代理默认值
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Box Model 图：可视化 margin / border / padding / content
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="24-强制伪类force-pseudo-class"&gt;2.4 强制伪类（Force Pseudo-class）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Elements 面板 → 选中元素 → :hov 按钮
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 勾选 :hover / :active / :focus / :visited
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 即使鼠标不在元素上也能看到 :hover 状态
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="三场景-2console-调试"&gt;三、场景 2：Console 调试
&lt;/h2&gt;&lt;h3 id="31-基础-api"&gt;3.1 基础 API
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 格式化输出
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;普通&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;信息&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;警告&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;错误&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;table&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Alice&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Bob&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;}]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Group 1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;inside group&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;groupEnd&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 计时
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;time&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;fetch&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/api/data&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;timeEnd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;fetch&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 断言
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;x 必须为正&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 对象展开
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;depth&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="32-引用前一次结果"&gt;3.2 引用前一次结果
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;$_&lt;/span&gt; &lt;span class="c1"&gt;// 上一次 console 输出的结果
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;$0&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$4&lt;/span&gt; &lt;span class="c1"&gt;// Elements 面板最近选中的 5 个元素
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#id&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// document.querySelector 的简写
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;$$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;div&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// document.querySelectorAll 的简写
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;$x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;//div&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// XPath 选择
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="33-live-expression实时表达式"&gt;3.3 Live Expression（实时表达式）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Console 面板 → 点眼睛图标
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 输入 document.title
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 顶部实时显示当前 title（不打印）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 适合观察&amp;#34;页面是否被 XHR 改了状态&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="四场景-3断点调试sources"&gt;四、场景 3：断点调试（Sources）
&lt;/h2&gt;&lt;h3 id="41-三种断点"&gt;4.1 三种断点
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 行断点：Sources 面板点击行号
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 条件断点：右键行号 → &amp;#34;Add conditional breakpoint&amp;#34; → 写表达式
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 事件断点：Sources → Event Listener Breakpoints → 勾选事件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="42-调试控制"&gt;4.2 调试控制
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;F8 / F5 继续执行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;F10 / F6 单步跳过（Step Over）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;F11 / F7 单步进入（Step Into）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Shift + F11 单步退出（Step Out）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Ctrl + F8 临时禁用所有断点
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="43-黑盒脚本blackbox"&gt;4.3 黑盒脚本（Blackbox）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Settings → Blackboxing → Add pattern
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 写 /node_modules/.*\.js$
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 调试时跳过第三方库（jQuery / React 源码）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 只调试自己写的代码
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="44-监听-xhr--fetch"&gt;4.4 监听 XHR / Fetch
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sources → XHR/fetch Breakpoints → Add pattern
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 写 /api/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 每次请求 /api/xxx 都会自动断点到&amp;#34;发起请求&amp;#34;那一行
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="五场景-4network-抓包"&gt;五、场景 4：Network 抓包
&lt;/h2&gt;&lt;h3 id="51-基础"&gt;5.1 基础
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Network 面板：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- All / XHR / JS / CSS / Img / Media / Doc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 红色 = 失败
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Status / Method / Type / Size / Time / Waterfall
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 右键 → Copy → Copy as cURL（命令行重放）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="52-限流throttling"&gt;5.2 限流（Throttling）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Network 面板 → Throttling 下拉
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Online（默认）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Slow 3G
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Fast 3G
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Slow 4G
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Fast 4G
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Add custom...（自定义）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;用途&lt;/strong&gt;：模拟弱网环境，看页面加载逻辑、占位符、loading 状态。&lt;/p&gt;
&lt;h3 id="53-拦截请求block--override"&gt;5.3 拦截请求（Block / Override）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Block request URL：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Network 面板 → 右键请求 → Block request URL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 输入匹配的 URL pattern（如 /api/track）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 此后该请求永远 404
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 用于：屏蔽埋点、屏蔽广告追踪、看页面&amp;#34;无脚本&amp;#34;渲染
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Override content：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Sources 面板 → Overrides 子标签 → Select folder for overrides
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 本地文件夹映射到页面
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 改本地文件 → 页面立即生效，**不刷新**（比 Live Reload 还快）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="54-har-导出--导入"&gt;5.4 HAR 导出 / 导入
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Network 面板 → 右键 → Save all as HAR with content
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 同事拿到 HAR → Network 面板 → 右键 → Import HAR file
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 复现你的网络环境（含响应体）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="六场景-5performance-性能分析"&gt;六、场景 5：Performance 性能分析
&lt;/h2&gt;&lt;h3 id="61-录制"&gt;6.1 录制
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. Performance 面板 → 点录制按钮（或 Cmd/Ctrl + E）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 正常操作页面（点击、滚动、加载）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 再次点录制按钮停止
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 自动生成火焰图 + Summary
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="62-看什么"&gt;6.2 看什么
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- FCP（First Contentful Paint） 首次内容绘制
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- LCP（Largest Contentful Paint） 最大内容绘制
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- TTI（Time to Interactive） 可交互时间
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- TBT（Total Blocking Time） 长任务阻塞
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- CLS（Cumulative Layout Shift） 布局偏移
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="63-找长任务"&gt;6.3 找长任务
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Main 线程的黄色/红色块 = 长任务（&amp;gt; 50ms）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 点击 → 下方 Summary 看哪个函数耗时
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 双击跳到 Sources 面板对应代码
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="64-lighthouse"&gt;6.4 Lighthouse
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Lighthouse 面板 → 选择 Performance / Accessibility / Best Practices / SEO
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ Generate report
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 100 分制报告 + 优化建议
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="七场景-6application-存储--缓存"&gt;七、场景 6：Application 存储 / 缓存
&lt;/h2&gt;&lt;h3 id="71-存储面板"&gt;7.1 存储面板
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Application 面板：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Local Storage key-value 持久存储
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Session Storage 关闭标签页清空
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- IndexedDB 大容量结构化数据
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Cookies HTTP-only 也能看
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Cache Storage Service Worker 缓存
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Service Workers 注册的 SW
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="72-清空存储"&gt;7.2 清空存储
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Application → Storage → Clear site data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 一次清空 LocalStorage / SessionStorage / Cookies / Cache / IndexedDB / SW
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="73-模拟离线"&gt;7.3 模拟离线
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Application → Service Workers → Offline 勾选
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 即使网络正常，页面也走 SW 缓存（验证离线体验）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="八场景-7移动端调试"&gt;八、场景 7：移动端调试
&lt;/h2&gt;&lt;h3 id="81-设备模式"&gt;8.1 设备模式
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. F12 → 点左上角&amp;#34;切换设备&amp;#34;图标（或 Cmd/Ctrl + Shift + M）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 选预设设备（iPhone / iPad / Galaxy / Pixel）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 或自定义分辨率、DPR
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 顶部还有 Throttling 滑块（模拟低端机）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="82-真机调试usb"&gt;8.2 真机调试（USB）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Android：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 手机开&amp;#34;开发者选项&amp;#34; + &amp;#34;USB 调试&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. USB 连电脑
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. Chrome 地址栏 → chrome://inspect → 看到设备
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 点 inspect → 弹出 DevTools（**调试的是真机上的页面**）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iOS：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. Mac Safari → Develop → [你的 iPhone] → 选择页面
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 弹出 Web Inspector（**功能类似 Chrome DevTools**）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="83-远程调试真机网页"&gt;8.3 远程调试（真机网页）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 电脑和手机连同一 Wi-Fi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 电脑 DevTools → Settings → Devices → Add custom device
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 输入手机的 IP + 端口（手机开 Chrome → 设置 → 启用 USB 调试 + 端口转发）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 电脑 DevTools 直接看到手机页面
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="九场景-8自动化--脚本"&gt;九、场景 8：自动化 / 脚本
&lt;/h2&gt;&lt;h3 id="91-snippet代码片段"&gt;9.1 Snippet（代码片段）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sources 面板 → Snippets 子标签 → New snippet
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 写 JS 代码 → Ctrl + Enter 执行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;→ 代码片段永久保存，下次 F12 还在
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;示例：批量改 DOM&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 改所有外部链接为新标签打开
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a[href^=&amp;#34;http&amp;#34;]&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;_blank&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;rel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;noopener noreferrer&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="92-recorder录制脚本"&gt;9.2 Recorder（录制脚本）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DevTools → Recorder 面板（或 Performance → Record → Save as profile）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 点 Start recording
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 手动操作页面（点击、输入、滚动）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. Stop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 自动生成 Playwright / Puppeteer 代码
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5. 复用 → CI 自动化
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="93-command-menu"&gt;9.3 Command Menu
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Cmd/Ctrl + Shift + P → 调出命令面板
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;常用：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &amp;#34;Show Coverage&amp;#34; 代码覆盖率（哪些 JS/CSS 没用到）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &amp;#34;Capture full size screenshot&amp;#34; 全页截图
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &amp;#34;Capture node screenshot&amp;#34; 选中节点截图
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &amp;#34;Show sensors&amp;#34; 模拟地理位置 / 设备方向
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &amp;#34;Show rendering&amp;#34; 模拟视觉缺陷（色盲 / 视力模糊）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="十调试技巧速查"&gt;十、调试技巧速查
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;面板&lt;/th&gt;
					&lt;th&gt;关键操作&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;改样式看效果&lt;/td&gt;
					&lt;td&gt;Elements / Styles&lt;/td&gt;
					&lt;td&gt;改属性、勾掉属性、:hov&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;看 JS 错误&lt;/td&gt;
					&lt;td&gt;Console&lt;/td&gt;
					&lt;td&gt;console.error 红色 / 点击跳转&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;调试 JS 逻辑&lt;/td&gt;
					&lt;td&gt;Sources&lt;/td&gt;
					&lt;td&gt;断点、单步、Watch&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;抓包看请求&lt;/td&gt;
					&lt;td&gt;Network&lt;/td&gt;
					&lt;td&gt;Filter、Copy as cURL、Throttle&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;性能分析&lt;/td&gt;
					&lt;td&gt;Performance / Lighthouse&lt;/td&gt;
					&lt;td&gt;录制、火焰图、FCP/LCP/CLS&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;改存储&lt;/td&gt;
					&lt;td&gt;Application&lt;/td&gt;
					&lt;td&gt;LocalStorage / Cookies / SW&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;移动端&lt;/td&gt;
					&lt;td&gt;Toggle device&lt;/td&gt;
					&lt;td&gt;选设备、Throttle&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;自动化&lt;/td&gt;
					&lt;td&gt;Snippets / Recorder&lt;/td&gt;
					&lt;td&gt;写代码 / 录操作&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="十一chrome-devtools-隐藏技巧-5-个"&gt;十一、Chrome DevTools 隐藏技巧 5 个
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + Click&lt;/strong&gt;（Mac Cmd + Click）Sources 文件名 → &lt;strong&gt;在文件树中定位&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Console 多行编辑&lt;/strong&gt; → 输入 &lt;code&gt;Shift + Enter&lt;/code&gt; 换行（不提交）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;拖拽 DOM 节点&lt;/strong&gt; → Elements 面板的 DOM 节点可以&lt;strong&gt;拖动&lt;/strong&gt;改位置（不持久）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;双击 Elements 标签&lt;/strong&gt; → 展开/折叠所有子节点&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;右键图片 → Copy image as data URI&lt;/strong&gt; → 一键复制 base64（适合做占位图）&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="十二常见-5-个坑"&gt;十二、常见 5 个坑
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;改 CSS 不生效&lt;/strong&gt; → 用了 &lt;code&gt;!important&lt;/code&gt; 优先级覆盖、或选择器错了（用 Computed 面板看&amp;quot;实际生效的样式来源&amp;quot;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;断点不触发&lt;/strong&gt; → 异步代码用 &lt;code&gt;await&lt;/code&gt; 没断到，可能在 &lt;code&gt;setTimeout&lt;/code&gt; / 微任务里（&lt;strong&gt;断点放在 Promise 链的 &lt;code&gt;then&lt;/code&gt; 里&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Network 没记录到请求&lt;/strong&gt; → 过滤框清空、或请求是 &lt;code&gt;sendBeacon&lt;/code&gt;（Network 仍会记录，但 Properties 看不到）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performance 录制很慢&lt;/strong&gt; → 关闭其他标签页、Chrome 进程&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移动端调试断连&lt;/strong&gt; → USB 接触不良 / 手机锁屏（设&amp;quot;充电时不锁屏&amp;quot;）&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="十三参考资料"&gt;十三、参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://developer.chrome.com/docs/devtools/" target="_blank" rel="noopener"
 &gt;Chrome DevTools 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://developer.chrome.com/docs/devtools/tips/" target="_blank" rel="noopener"
 &gt;Chrome DevTools Tips and Tricks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://devtoolstips.org/" target="_blank" rel="noopener"
 &gt;DevTools 中文文档（前端早茶）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://developer.chrome.com/docs/lighthouse/overview/" target="_blank" rel="noopener"
 &gt;Lighthouse 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://web.dev/vitals/" target="_blank" rel="noopener"
 &gt;Web Vitals&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Chrome 数据目录搬家：mklink 符号链接 C 盘到 D 盘 一招搞定</title><link>https://liangweidonggood.github.io/p/chrome-data-move-mklink-2019/</link><pubDate>Sun, 15 Sep 2019 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/chrome-data-move-mklink-2019/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/chrome-data-move-mklink-2019/image/cover.jpg" alt="Featured image of post Chrome 数据目录搬家：mklink 符号链接 C 盘到 D 盘 一招搞定" /&gt;&lt;h2 id="一为什么-chrome-是-c-盘空间头号杀手"&gt;一、为什么 Chrome 是 C 盘空间&amp;quot;头号杀手&amp;quot;
&lt;/h2&gt;&lt;p&gt;Chrome 的用户数据目录 &lt;code&gt;C:\Users\&amp;lt;USER&amp;gt;\AppData\Local\Google&lt;/code&gt; 默认在 C 盘，&lt;strong&gt;装几年之后轻松 10-30 GB&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Cache&lt;/code&gt; —— 浏览器缓存&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Code Cache&lt;/code&gt; —— 编译后的 JS 缓存&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Service Worker\CacheStorage&lt;/code&gt; —— PWA 缓存&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IndexedDB&lt;/code&gt; —— 网页数据库&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Extensions&lt;/code&gt; —— 扩展&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Local Storage&lt;/code&gt; —— localStorage&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;256 GB 的 C 盘&lt;/strong&gt;装上 Chrome 用一两年，&lt;strong&gt;经常被吃光 30-50 GB&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;两条思路&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;mklink&lt;/code&gt; 目录联接&lt;/strong&gt;——&lt;strong&gt;把整个 Google 目录映射到 D 盘&lt;/strong&gt;（&lt;strong&gt;一劳永逸&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--disk-cache-dir&lt;/code&gt; 启动参数&lt;/strong&gt;——&lt;strong&gt;只搬缓存&lt;/strong&gt;（&lt;strong&gt;不搬历史 / 密码 / 扩展&lt;/strong&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;mklink&lt;/code&gt; 是首选&lt;/strong&gt;——&lt;strong&gt;所有 Chrome 数据都搬&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="二操作流程"&gt;二、操作流程
&lt;/h2&gt;&lt;h3 id="21-第一步彻底关闭-chrome"&gt;2.1 第一步：彻底关闭 Chrome
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;迁移前必须&lt;/strong&gt;确保&lt;strong&gt;没有任何 Chrome 进程在读写&lt;/strong&gt; Google 文件夹：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 关闭所有 Chrome 浏览器窗口
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. Ctrl+Shift+Esc 打开任务管理器
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 检查进程列表
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 如果看到 Google Chrome / Google Update → 右键 &amp;#34;结束任务&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;为什么必须关&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chrome 进程&lt;strong&gt;会锁定数据库文件&lt;/strong&gt;（&lt;code&gt;History&lt;/code&gt;、&lt;code&gt;Login Data&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关进程时 mmap 锁没释放&lt;/strong&gt;——&lt;strong&gt;剪切 / 移动&lt;/strong&gt;时会报&amp;quot;文件被占用&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Update 进程&lt;/strong&gt;会&lt;strong&gt;自动重启 Chrome&lt;/strong&gt;——&lt;strong&gt;先把它也杀&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-第二步迁移数据"&gt;2.2 第二步：迁移数据
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 在 D 盘新建文件夹：D:\Google_Data（名字随意）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 来到 C:\Users\&amp;lt;USER&amp;gt;\AppData\Local
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 找到 Google 文件夹 → Ctrl+X 剪切
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 粘贴到 D:\Google_Data\Google
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5. 现在的状态：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - D:\Google_Data\Google\ ← 实际数据
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - C:\Users\&amp;lt;USER&amp;gt;\AppData\Local\Google\ ← 没了
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;必须用剪切&lt;/strong&gt;（&lt;strong&gt;Ctrl+X&lt;/strong&gt;），&lt;strong&gt;不能复制&lt;/strong&gt;——&lt;strong&gt;否则会留两份&lt;/strong&gt;。&lt;strong&gt;移动后 C 盘应该没有 Google 目录&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="23-第三步管理员打开-cmd"&gt;2.3 第三步：管理员打开 cmd
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. Win+S 搜 &amp;#34;cmd&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 右键 → &amp;#34;以管理员身份运行&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;为什么必须管理员&lt;/strong&gt;：&lt;code&gt;mklink&lt;/code&gt; 是系统级操作，&lt;strong&gt;非管理员会被拒&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="24-第四步创建符号链接"&gt;2.4 第四步：创建符号链接
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;mklink&lt;/span&gt; /j &lt;span class="s2"&gt;&amp;#34;C:\Users\&amp;lt;USER&amp;gt;\AppData\Local\Google&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;D:\Google_Data\Google&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;参数说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/j&lt;/code&gt; —— &lt;strong&gt;目录联接&lt;/strong&gt;（&lt;strong&gt;junction&lt;/strong&gt;）——&lt;strong&gt;Windows 专有的硬链接形式&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;第一个参数 —— 联接点（C 盘原位置）&lt;/li&gt;
&lt;li&gt;第二个参数 —— 真实目录（D 盘目标）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;成功标志&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;为 C:\Users\...\Local\Google &amp;lt;&amp;lt;===&amp;gt;&amp;gt; D:\Google_Data\Google 创建的联接
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;同时你在 C 盘原位置会看到&lt;strong&gt;一个带有&amp;quot;快捷方式&amp;quot;图标的 Google 文件夹&lt;/strong&gt;——&lt;strong&gt;但这是个&amp;quot;目录联接&amp;quot;&lt;/strong&gt;（&lt;strong&gt;不是普通快捷方式&lt;/strong&gt;）。&lt;/p&gt;
&lt;h3 id="25-验证"&gt;2.5 验证
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 启动 Chrome
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 访问 chrome://version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 检查&amp;#34;个人资料路径&amp;#34; → 应该是 C:\Users\&amp;lt;USER&amp;gt;\AppData\Local\Google\...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 实际所有读写都走 D:\Google_Data\Google
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5. 检查 D 盘空间 → 应该多了几个 GB
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="三原理"&gt;三、原理
&lt;/h2&gt;&lt;h3 id="31-mklink-三种链接"&gt;3.1 mklink 三种链接
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;类型&lt;/th&gt;
					&lt;th&gt;标志&lt;/th&gt;
					&lt;th&gt;适用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;文件硬链接&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mklink /H&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;单个文件&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;文件符号链接&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mklink&lt;/code&gt;（默认）&lt;/td&gt;
					&lt;td&gt;单个文件&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;目录符号链接&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mklink /D&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;目录（&lt;strong&gt;要管理员&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;目录联接&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mklink /J&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;目录（&lt;strong&gt;Win Vista+ 内置，无管理员要求？&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;/j&lt;/code&gt; 的特殊性&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;不需要管理员&lt;/strong&gt;（&lt;strong&gt;某些 Win10 版本仍要&lt;/strong&gt;——&lt;strong&gt;建议都用管理员&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;绝对路径&lt;/strong&gt;——&lt;strong&gt;重命名 / 移动真实目录会断链&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不支持跨卷&lt;/strong&gt;？——&lt;strong&gt;实际支持 NTFS 跨卷&lt;/strong&gt;（&lt;strong&gt;Symlink 才完全支持&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不支持网络共享&lt;/strong&gt;（&lt;strong&gt;要 /D&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="32-与快捷方式的区别"&gt;3.2 与快捷方式的区别
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;快捷方式 (.lnk)&lt;/th&gt;
					&lt;th&gt;目录联接 (/J)&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;对应用透明&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;❌ 应用不知道&lt;/td&gt;
					&lt;td&gt;✅ &lt;strong&gt;完全透明&lt;/strong&gt;——&lt;strong&gt;应用以为在原位置&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;文件操作&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;双击才会跳转&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;读写都直接走真实路径&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;空间占用&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;几 KB&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;几乎 0&lt;/strong&gt;（&lt;strong&gt;只存联接点元数据&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Chrome 打开 &lt;code&gt;C:\Users\...\Local\Google&lt;/code&gt; 时&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;快捷方式&lt;/strong&gt;：系统跳到 &lt;code&gt;D:\Google_Data\Google&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;目录联接&lt;/strong&gt;：&lt;strong&gt;对 Chrome 完全透明&lt;/strong&gt;——&lt;strong&gt;Chrome 以为自己访问 C 盘&lt;/strong&gt;——&lt;strong&gt;所有 mmap / 锁都正常工作&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="四搬完之后删什么"&gt;四、搬完之后删什么
&lt;/h2&gt;&lt;h3 id="41-浏览器缓存重点"&gt;4.1 浏览器缓存（重点）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;C:\Users\&amp;lt;USER&amp;gt;\AppData\Local\Google\Chrome\User Data\Default\Cache
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;这是最大的占用&lt;/strong&gt;——&lt;strong&gt;几 GB 起&lt;/strong&gt;——&lt;strong&gt;定期手动清&lt;/strong&gt;或者&lt;strong&gt;用 Chrome 自带清理&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 打开 Chrome
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 快捷键 Ctrl+Shift+Delete
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 选 &amp;#34;缓存的图片和文件&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 时间范围 &amp;#34;时间不限&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5. 清除数据
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="42-service-worker-缓存"&gt;4.2 Service Worker 缓存
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chrome://serviceworker-internals/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;不需要的 Service Worker 可以点 &amp;ldquo;Unregister&amp;rdquo;&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="43-扩展extensions"&gt;4.3 扩展（Extensions）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chrome://extensions/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;关闭 / 卸载不用的扩展&lt;/strong&gt;——&lt;strong&gt;每个扩展都有自己的 cache&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="五备选仅搬缓存不动数据"&gt;五、备选：仅搬缓存（不动数据）
&lt;/h2&gt;&lt;p&gt;如果你&lt;strong&gt;不想做符号链接&lt;/strong&gt;（&lt;strong&gt;觉得危险&lt;/strong&gt;），&lt;strong&gt;只搬缓存&lt;/strong&gt;用 &lt;code&gt;--disk-cache-dir&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 桌面 Chrome 快捷方式 → 右键 → 属性
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. &amp;#34;目标&amp;#34; 一栏的最末尾加一个空格，然后粘贴：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --disk-cache-dir=&amp;#34;D:\ChromeCache&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 确定
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chrome 缓存写到 D 盘&lt;/strong&gt;——&lt;strong&gt;省 C 盘几个 G&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史记录 / 密码 / 扩展 / 书签&lt;/strong&gt; 仍在 C 盘原位置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不会破坏 Chrome 状态&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;但&lt;/strong&gt;：&lt;strong&gt;不推荐&lt;/strong&gt;——&lt;strong&gt;只搬缓存意味着密码 / 历史 / 扩展都在 C 盘&lt;/strong&gt;——&lt;strong&gt;C 盘系统重装会丢&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="六edge--firefox--brave-类似操作"&gt;六、Edge / Firefox / Brave 类似操作
&lt;/h2&gt;&lt;h3 id="61-edge"&gt;6.1 Edge
&lt;/h3&gt;&lt;p&gt;Edge 目录 &lt;code&gt;C:\Users\&amp;lt;USER&amp;gt;\AppData\Local\Microsoft\Edge&lt;/code&gt; —— &lt;strong&gt;结构与 Chrome 一样&lt;/strong&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;mklink&lt;/span&gt; /j &lt;span class="s2"&gt;&amp;#34;C:\Users\&amp;lt;USER&amp;gt;\AppData\Local\Microsoft\Edge&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;D:\Edge_Data\Edge&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="62-firefox"&gt;6.2 Firefox
&lt;/h3&gt;&lt;p&gt;Firefox 用户目录 &lt;code&gt;C:\Users\&amp;lt;USER&amp;gt;\AppData\Roaming\Mozilla\Firefox\Profiles\&amp;lt;xxx&amp;gt;.default-release&lt;/code&gt;—— &lt;strong&gt;走 Roaming 不是 Local&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;mklink&lt;/span&gt; /j &lt;span class="s2"&gt;&amp;#34;C:\Users\&amp;lt;USER&amp;gt;\AppData\Roaming\Mozilla\Firefox\Profiles&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;D:\Firefox_Data\Profiles&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="63-brave"&gt;6.3 Brave
&lt;/h3&gt;&lt;p&gt;Brave 目录 &lt;code&gt;C:\Users\&amp;lt;USER&amp;gt;\AppData\Local\BraveSoftware\Brave-Browser&lt;/code&gt;—— &lt;strong&gt;同理&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="七自动化脚本"&gt;七、自动化脚本
&lt;/h2&gt;&lt;h3 id="71-开机自动检查-mklink-状态"&gt;7.1 开机自动检查 mklink 状态
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$linkPath&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;C:\Users\&lt;/span&gt;&lt;span class="nv"&gt;$env:USERNAME&lt;/span&gt;&lt;span class="s2"&gt;\AppData\Local\Google&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$targetPath&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;D:\Google_Data\Google&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 检查 mklink 是否存在&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-not&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Test-Path&lt;/span&gt; &lt;span class="nv"&gt;$linkPath&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;# 检查实际目录是否在 D 盘&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Test-Path&lt;/span&gt; &lt;span class="nv"&gt;$targetPath&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Host&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;实际数据在 D 盘，符号链接丢失。重新创建...&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-ForegroundColor&lt;/span&gt; &lt;span class="n"&gt;Yellow&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;# 用 admin 权限重新创建&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Start-Process&lt;/span&gt; &lt;span class="n"&gt;cmd&lt;/span&gt; &lt;span class="n"&gt;-ArgumentList&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/c mklink /j &lt;/span&gt;&lt;span class="se"&gt;`&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$linkPath&lt;/span&gt;&lt;span class="se"&gt;`&amp;#34;&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="se"&gt;`&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$targetPath&lt;/span&gt;&lt;span class="se"&gt;`&amp;#34;&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Verb&lt;/span&gt; &lt;span class="n"&gt;RunAs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Host&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Chrome 数据目录不存在，请检查&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-ForegroundColor&lt;/span&gt; &lt;span class="n"&gt;Red&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$item&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Get-Item&lt;/span&gt; &lt;span class="nv"&gt;$linkPath&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Attributes&lt;/span&gt; &lt;span class="o"&gt;-band&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;IO.FileAttributes&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;ReparsePoint&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Host&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;符号链接正常：&lt;/span&gt;&lt;span class="nv"&gt;$linkPath&lt;/span&gt;&lt;span class="s2"&gt; → &lt;/span&gt;&lt;span class="nv"&gt;$targetPath&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-ForegroundColor&lt;/span&gt; &lt;span class="n"&gt;Green&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Host&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Google 目录是真实目录，未创建符号链接&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-ForegroundColor&lt;/span&gt; &lt;span class="n"&gt;Red&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="72-定期清理-chrome-缓存"&gt;7.2 定期清理 Chrome 缓存
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 清理超过 30 天的缓存&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$cachePath&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;C:\Users\&lt;/span&gt;&lt;span class="nv"&gt;$env:USERNAME&lt;/span&gt;&lt;span class="s2"&gt;\AppData\Local\Google\Chrome\User Data\Default\Cache&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Get-ChildItem&lt;/span&gt; &lt;span class="nv"&gt;$cachePath&lt;/span&gt; &lt;span class="n"&gt;-Recurse&lt;/span&gt; &lt;span class="o"&gt;-File&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Where-Object&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;LastWriteTime&lt;/span&gt; &lt;span class="o"&gt;-lt&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Get-Date&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="py"&gt;AddDays&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;-30&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Remove-Item&lt;/span&gt; &lt;span class="n"&gt;-Force&lt;/span&gt; &lt;span class="n"&gt;-ErrorAction&lt;/span&gt; &lt;span class="n"&gt;SilentlyContinue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="八常见-5-个坑"&gt;八、常见 5 个坑
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Chrome 没关就 mklink&lt;/strong&gt;——&lt;strong&gt;剪切的 Google 目录里有 Chrome 锁定的文件&lt;/strong&gt;——&lt;strong&gt;关进程后再做&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;路径带中文出错&lt;/strong&gt;——&lt;strong&gt;&lt;code&gt;mklink&lt;/code&gt; 对中文路径 OK&lt;/strong&gt;——&lt;strong&gt;但 PowerShell 里中文路径&lt;/strong&gt;要加反引号转义&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;target 路径有空格&lt;/strong&gt;——&lt;strong&gt;D 盘 Program Files 之类&lt;/strong&gt;——&lt;strong&gt;必须双引号包起来&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重启后符号链接&amp;quot;消失&amp;quot;&lt;/strong&gt;——&lt;strong&gt;可能是杀毒软件误判&lt;/strong&gt;——&lt;strong&gt;把 mklink 加白名单&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OneDrive 占 C 盘&lt;/strong&gt;——&lt;strong&gt;OneDrive 走 &lt;code&gt;C:\Users\&amp;lt;USER&amp;gt;\OneDrive&lt;/code&gt;&lt;/strong&gt; —— &lt;strong&gt;搬家思路同 Chrome&lt;/strong&gt;（&lt;strong&gt;OneDrive 设置里选&amp;quot;管理备份&amp;quot;&lt;/strong&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="九其它-c-盘减肥方案"&gt;九、其它 C 盘减肥方案
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;目录&lt;/th&gt;
					&lt;th&gt;大小&lt;/th&gt;
					&lt;th&gt;处理方案&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;C:\Windows\Temp&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;几 GB&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;定期 &lt;code&gt;cleanmgr&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;C:\hiberfil.sys&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;≈ 内存大小&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;powercfg -h off&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;C:\pagefile.sys&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;几 GB&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;设置到 D 盘&lt;/strong&gt;（&lt;strong&gt;系统属性 → 高级&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;C:\Users\&amp;lt;USER&amp;gt;\AppData\Local\Temp&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;几 GB&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;定期清理&lt;/strong&gt;（&lt;code&gt;%TEMP%&lt;/code&gt; 变量目录）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;C:\Users\&amp;lt;USER&amp;gt;\AppData\Local\Google&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;10-30 GB&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;mklink 到 D 盘&lt;/strong&gt;（&lt;strong&gt;本文&lt;/strong&gt;）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;C:\Users\&amp;lt;USER&amp;gt;\AppData\Local\pip\cache&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;几 GB&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;pip config set global.cache-dir D:\pip-cache&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;C:\Users\&amp;lt;USER&amp;gt;\.nuget\packages&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;几 GB&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;nuget config set globalPackagesFolder D:\nuget-cache&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;C:\Users\&amp;lt;USER&amp;gt;\.gradle\caches&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;几 GB&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;GRADLE_USER_HOME=D:\gradle-home&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;C:\Users\&amp;lt;USER&amp;gt;\.m2\repository&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;几 GB&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;~/.m2/settings.xml&lt;/code&gt; 改 &lt;code&gt;&amp;lt;localRepository&amp;gt;&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="十总结"&gt;十、总结
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;mklink /j 目录联接&lt;/strong&gt; = &lt;strong&gt;最一劳永逸的方案&lt;/strong&gt;——&lt;strong&gt;完全透明&lt;/strong&gt;——&lt;strong&gt;Chrome 不知道自己在 D 盘&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;步骤&lt;/strong&gt;：关 Chrome → 剪切 Google 目录到 D 盘 → mklink 目录联接 → 重启 Chrome&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优势&lt;/strong&gt;：&lt;strong&gt;所有数据都在 D 盘&lt;/strong&gt;——&lt;strong&gt;C 盘瞬间释放 10-30 GB&lt;/strong&gt;——&lt;strong&gt;重装系统迁移方便&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;备选&lt;/strong&gt;：&lt;strong&gt;只搬缓存&lt;/strong&gt;用 &lt;code&gt;--disk-cache-dir=&amp;quot;D:\ChromeCache&amp;quot;&lt;/code&gt; —— &lt;strong&gt;简单但只搬缓存&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;同样思路&lt;/strong&gt;适用于 Edge / Firefox / Brave / OneDrive / NuGet / Maven / Gradle&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win10+ PowerToys&lt;/strong&gt; 的 &lt;strong&gt;File Locksmith&lt;/strong&gt; 可以&lt;strong&gt;查谁锁住了文件&lt;/strong&gt;——&lt;strong&gt;mklink 失败时排查用&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/mklink" target="_blank" rel="noopener"
 &gt;Microsoft Docs - mklink&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://support.google.com/chrome/answer/2392709" target="_blank" rel="noopener"
 &gt;Chrome 清理缓存官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/zh-cn/windows/powertoys/file-locksmith" target="_blank" rel="noopener"
 &gt;Microsoft PowerToys File Locksmith&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/zh-cn/windows/win32/fileio/using-junctions" target="_blank" rel="noopener"
 &gt;NTFS Junction Points - 微软 KB&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Windows 远程与浏览器工具链：Xshell / FileZilla / Chrome / 文件处理</title><link>https://liangweidonggood.github.io/p/windows-yuan-cheng-chuan-shu-liu-lan-qi/</link><pubDate>Sun, 15 Dec 2013 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/windows-yuan-cheng-chuan-shu-liu-lan-qi/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/windows-yuan-cheng-chuan-shu-liu-lan-qi/image/cover.jpg" alt="Featured image of post Windows 远程与浏览器工具链：Xshell / FileZilla / Chrome / 文件处理" /&gt;&lt;h2 id="一windows-远程办公三件套"&gt;一、Windows 远程办公三件套
&lt;/h2&gt;&lt;p&gt;2013 年的远程办公还远没有 2020 年后那么&amp;quot;云原生&amp;quot;——&lt;strong&gt;Windows 上远程服务器、传文件、查文档的常规动作&lt;/strong&gt;还是靠&lt;strong&gt;Xshell + FileZilla + Chrome&lt;/strong&gt;这三条腿。本文整理这三条腿的实战细节，外加 &lt;strong&gt;Graphviz 绘图&lt;/strong&gt;、&lt;strong&gt;Tesseract OCR 文字识别&lt;/strong&gt;、&lt;strong&gt;Zhexi 文本处理&lt;/strong&gt;等&amp;quot;工具&amp;quot;。&lt;/p&gt;
&lt;h2 id="二xshellwindows-最好的-ssh-客户端"&gt;二、Xshell：Windows 最好的 SSH 客户端
&lt;/h2&gt;&lt;h3 id="21-安装"&gt;2.1 安装
&lt;/h3&gt;&lt;p&gt;Xshell 是 NetSarang 出品的商业 SSH 客户端。&lt;strong&gt;个人/学校免费版&lt;/strong&gt;到官网 &lt;code&gt;https://www.xshell.com/&lt;/code&gt; 下载，5.x 起&lt;strong&gt;对个人/非商业用户免费&lt;/strong&gt;。安装时&lt;strong&gt;取消勾选&amp;quot;Xftp&amp;quot;等捆绑&lt;/strong&gt;（按需选装）。&lt;/p&gt;
&lt;h3 id="22-新建-ssh-会话"&gt;2.2 新建 SSH 会话
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;文件 → 新建&lt;/code&gt; → 名称 + 主机 + 端口（默认 22）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;用户身份验证&lt;/code&gt; → 填用户名 + 密码&lt;/li&gt;
&lt;li&gt;&lt;code&gt;保持活动状态&lt;/code&gt; → 勾选&amp;quot;发送保持活动消息&amp;quot;（避免 NAT 断开）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;外观 → 字体&lt;/code&gt; → Consolas 10pt（&lt;strong&gt;中英文都好看&lt;/strong&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;企业实战技巧&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;保存密码&lt;/strong&gt;：Xshell 7+ 取消&amp;quot;明文保存&amp;quot;，用 &lt;strong&gt;Master Password&lt;/strong&gt; 加密&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;登录脚本&lt;/strong&gt;：&lt;code&gt;登录脚本&lt;/code&gt; 标签 → 添加 &lt;code&gt;expect&lt;/code&gt; 脚本处理二次验证&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代理跳板&lt;/strong&gt;：&lt;code&gt;隧道 → TCP 转发&lt;/code&gt;，配合 Xshell 的&amp;quot;跳板&amp;quot;功能穿透堡垒机&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="23-ssh-密钥登录比密码更安全"&gt;2.3 SSH 密钥登录（比密码更安全）
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;工具 → 用户密钥管理者 → 生成 → RSA 2048 / Ed25519&lt;/li&gt;
&lt;li&gt;导出公钥 → 复制到服务器的 &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;终端 → 用户身份验证 → 选 Public Key&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 服务器端一键添加&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p ~/.ssh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; chmod &lt;span class="m"&gt;700&lt;/span&gt; ~/.ssh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ssh-rsa AAAA...公钥内容...== user@host&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; ~/.ssh/authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;600&lt;/span&gt; ~/.ssh/authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="24-常用快捷键"&gt;2.4 常用快捷键
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;快捷键&lt;/th&gt;
					&lt;th&gt;作用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Alt + Enter&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;全屏&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Ctrl + Shift + T&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;新建标签页&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Alt + 数字&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;切换到第 N 个标签&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Ctrl + Insert&lt;/code&gt; / &lt;code&gt;Shift + Insert&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;复制 / 粘贴（Xshell 默认）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Ctrl + L&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;清屏&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="25-性能调优"&gt;2.5 性能调优
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;连接 → SSH&lt;/code&gt; 勾选 &lt;code&gt;Compression&lt;/code&gt;（慢网加速）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;高级 → 终端&lt;/code&gt; 选 &lt;code&gt;xterm-256color&lt;/code&gt;（颜色更丰富）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;高级 → 键盘&lt;/code&gt; 设 &lt;code&gt;Backspace = ASCII 127&lt;/code&gt;（兼容 vim）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="三filezillaftp--sftp-文件传输"&gt;三、FileZilla：FTP / SFTP 文件传输
&lt;/h2&gt;&lt;h3 id="31-安装"&gt;3.1 安装
&lt;/h3&gt;&lt;p&gt;FileZilla 分两个版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;FileZilla Client&lt;/strong&gt;：免费开源，&lt;strong&gt;推荐&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FileZilla Server&lt;/strong&gt;：开源但商业部署要付费&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方 &lt;code&gt;https://filezilla-project.org/&lt;/code&gt; 下载 Client，安装时&lt;strong&gt;取消勾选&amp;quot;金山毒霸&amp;quot;等捆绑&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="32-sftp-连接"&gt;3.2 SFTP 连接
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;文件 → 站点管理器 → 新站点&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;协议：&lt;strong&gt;SFTP&lt;/strong&gt;（不是 FTP）&lt;/li&gt;
&lt;li&gt;主机 + 端口（22）&lt;/li&gt;
&lt;li&gt;登录类型：正常 / 密钥文件&lt;/li&gt;
&lt;li&gt;字符集：&lt;strong&gt;UTF-8&lt;/strong&gt;（避免中文乱码）&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：&lt;strong&gt;SFTP 和 FTPS 是两个完全不同的协议&lt;/strong&gt;。SFTP 走 SSH（端口 22），FTPS 走 SSL/TLS（端口 990）。&lt;strong&gt;现代实践全部用 SFTP&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="33-传输优化"&gt;3.3 传输优化
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;编辑 → 设置 → 传输&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;最大并发传输数&lt;/strong&gt;：10&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最大并发连接数&lt;/strong&gt;：10&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分块大小&lt;/strong&gt;：加大到 1 MB（大文件更快）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;失败重试&lt;/strong&gt;：5 次&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="34-排错连接超时"&gt;3.4 排错：连接超时
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;被动模式（PASV）/ 主动模式（PORT）&lt;/strong&gt;：服务器在 NAT 后，&lt;strong&gt;客户端必须用主动模式&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSL 警告&lt;/strong&gt;：自签名证书第一次会弹&amp;quot;未受信任&amp;quot;，勾选&amp;quot;始终信任&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文件名乱码&lt;/strong&gt;：服务器用 GBK，客户端用 UTF-8 就会乱码——切换字符集&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="四google-chrome开发者浏览器"&gt;四、Google Chrome：开发者浏览器
&lt;/h2&gt;&lt;h3 id="41-安装与去广告"&gt;4.1 安装与去广告
&lt;/h3&gt;&lt;p&gt;官方 &lt;code&gt;https://www.google.com/chrome/&lt;/code&gt; 下载，安装时&lt;strong&gt;取消勾选&amp;quot;将 Chrome 设为默认浏览器&amp;quot;&lt;strong&gt;如果不想换默认。Chrome 自身&lt;/strong&gt;无内置广告&lt;/strong&gt;（主要担心的是 360 安全浏览器那种&amp;quot;推荐&amp;quot;）。&lt;/p&gt;
&lt;h3 id="42-开发者必备扩展"&gt;4.2 开发者必备扩展
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;扩展&lt;/th&gt;
					&lt;th&gt;用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;JSON Viewer&lt;/code&gt; / &lt;code&gt;JSONVue&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;美化 JSON 响应&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Vue Devtools&lt;/code&gt; / &lt;code&gt;React Devtools&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;前端框架调试&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Postman Interceptor&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;配合 Postman 拦截请求&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;SwitchyOmega&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;代理切换（开发环境必备）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;EditThisCookie&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;快速编辑 Cookie&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;User-Agent Switcher&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;切换 UA 模拟移动端&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="43-代理与-socks5"&gt;4.3 代理与 SOCKS5
&lt;/h3&gt;&lt;p&gt;Chrome 系统代理走 IE 设置。如果需要按站点分流：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 用 SwitchyOmega 配置：直连 / 代理 / 自动切换&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 代理规则：file:///C:/path/to/auto_switch.pac&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;auto_switch.pac&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;FindProxyForURL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;host&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dnsDomainIs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;host&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;internal.example.com&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;SOCKS5 127.0.0.1:1080&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;DIRECT&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="44-调试模式"&gt;4.4 调试模式
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;chrome://flags&lt;/code&gt; 是隐藏实验室开关，&lt;strong&gt;对终端用户慎用&lt;/strong&gt;。常用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;chrome://flags/#smooth-scrolling&lt;/code&gt; 平滑滚动&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chrome://flags/#enable-parallel-downloading&lt;/code&gt; 并行下载（&lt;strong&gt;对慢网很有效&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chrome://discards&lt;/code&gt; 查看标签页休眠状态&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="45-抓包工具联动"&gt;4.5 抓包工具联动
&lt;/h3&gt;&lt;p&gt;Chrome DevTools 的 &lt;code&gt;Network&lt;/code&gt; 标签&lt;strong&gt;抓 HTTPS 请求需要导出&lt;/strong&gt;。配合外部抓包工具（&lt;strong&gt;[2016-11-15 数据库客户端] 中提到的 Fiddler&lt;/strong&gt;）才能抓到 native 应用流量。&lt;/p&gt;
&lt;h2 id="五graphviz代码画流程图"&gt;五、Graphviz：代码画流程图
&lt;/h2&gt;&lt;h3 id="51-定位"&gt;5.1 定位
&lt;/h3&gt;&lt;p&gt;Graphviz 1991 年起源 AT&amp;amp;T 贝尔实验室，&lt;strong&gt;用 DOT 语言描述图，自动布局&lt;/strong&gt;。&lt;code&gt;dot / neato / fdp / circo&lt;/code&gt; 四个布局引擎适应不同场景。&lt;/p&gt;
&lt;h3 id="52-安装"&gt;5.2 安装
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;官方 &lt;code&gt;https://www.graphviz.org/download/&lt;/code&gt; 下载 Windows msi&lt;/li&gt;
&lt;li&gt;装好后&lt;strong&gt;把 &lt;code&gt;C:\Program Files\Graphviz\bin&lt;/code&gt; 加到 PATH&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="53-dot-语言基础"&gt;5.3 DOT 语言基础
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;digraph hello {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rankdir=LR; // 从左到右布局
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; node [shape=box style=&amp;#34;rounded,filled&amp;#34; fillcolor=lightblue];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Start [shape=ellipse fillcolor=lightgreen];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; End [shape=ellipse fillcolor=lightcoral];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Start -&amp;gt; &amp;#34;读取配置&amp;#34; -&amp;gt; &amp;#34;解析参数&amp;#34; -&amp;gt; &amp;#34;执行业务&amp;#34; -&amp;gt; End;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;解析参数&amp;#34; -&amp;gt; &amp;#34;参数错误&amp;#34; [label=&amp;#34;失败&amp;#34; color=red];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;参数错误&amp;#34; -&amp;gt; End;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="54-plantuml-集成"&gt;5.4 PlantUML 集成
&lt;/h3&gt;&lt;p&gt;PlantUML 内部用 Graphviz 渲染 .puml 文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PlantUML 渲染器路径：C:\soft\Graphviz\bin\dot.exe
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;VSCode 装 &lt;code&gt;PlantUML&lt;/code&gt; 扩展 → 设置 &lt;code&gt;plantuml.render&lt;/code&gt; 为 &lt;code&gt;PlantUMLServer&lt;/code&gt; 或 &lt;code&gt;Local&lt;/code&gt;，&lt;strong&gt;Local 模式必须装 Graphviz&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="六tesseract-ocr免费文字识别"&gt;六、Tesseract OCR：免费文字识别
&lt;/h2&gt;&lt;h3 id="61-定位"&gt;6.1 定位
&lt;/h3&gt;&lt;p&gt;Tesseract 是 HP 实验室 1985-1995 年开发、2005 年开源的 OCR 引擎。Google 维护至今，&lt;strong&gt;支持 100+ 语言&lt;/strong&gt;。对印刷体识别率 95%+，对手写体效果一般。&lt;/p&gt;
&lt;h3 id="62-windows-安装"&gt;6.2 Windows 安装
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;官方 &lt;code&gt;https://github.com/UB-Mannheim/tesseract/wiki&lt;/code&gt; 提供 Windows 安装包&lt;/li&gt;
&lt;li&gt;安装时&lt;strong&gt;勾选中文语言包&lt;/strong&gt;：&lt;code&gt;chi_sim&lt;/code&gt;（简体）、&lt;code&gt;chi_tra&lt;/code&gt;（繁体）&lt;/li&gt;
&lt;li&gt;装好后 &lt;code&gt;tesseract --list-langs&lt;/code&gt; 验证&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="63-命令行用法"&gt;6.3 命令行用法
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 识别单张图（中英文）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tesseract input.png output -l chi_sim+eng
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 识别 PDF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tesseract input.pdf output -l chi_sim+eng
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 输出为 hOCR（带坐标的 HTML）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tesseract input.png output hocr
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 输出为 TSV（表格友好）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tesseract input.png output tsv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="64-python-绑定"&gt;6.4 Python 绑定
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;pytesseract&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;PIL&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;screenshot.png&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pytesseract&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;image_to_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lang&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;chi_sim+eng&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="65-提升识别率"&gt;6.5 提升识别率
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;预处理&lt;/strong&gt;：二值化（&lt;code&gt;cv2.threshold&lt;/code&gt;）、降噪（&lt;code&gt;cv2.medianBlur&lt;/code&gt;）、倾斜矫正&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DPI 至少 300&lt;/strong&gt;：扫描 PDF 转图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分语言模型&lt;/strong&gt;：中文 + 英文组合，&lt;strong&gt;比单一语言更准&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="七zhexi文本处理小工具"&gt;七、Zhexi：文本处理小工具
&lt;/h2&gt;&lt;h3 id="71-定位"&gt;7.1 定位
&lt;/h3&gt;&lt;p&gt;Zhexi 是 2018 年由个人开发者 &lt;code&gt;https://gitee.com/longwen-zhexi/zhexi&lt;/code&gt; 维护的&lt;strong&gt;轻量文本批量处理工具&lt;/strong&gt;。&lt;strong&gt;常用于&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;批量重命名文件&lt;/li&gt;
&lt;li&gt;批量替换文本&lt;/li&gt;
&lt;li&gt;提取日志关键字段&lt;/li&gt;
&lt;li&gt;大文件按行分割&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="72-典型用法"&gt;7.2 典型用法
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 批量重命名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;zhexi rename --pattern &lt;span class="s2"&gt;&amp;#34;IMG_(\d+).jpg&amp;#34;&lt;/span&gt; --replace &lt;span class="s2"&gt;&amp;#34;photo-&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;.jpg&amp;#34;&lt;/span&gt; --dir ./photos
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 大文件按行分割&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;zhexi split --input big.log --lines &lt;span class="m"&gt;10000&lt;/span&gt; --prefix chunk-
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 提取 IPv4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;zhexi extract --pattern &lt;span class="s2"&gt;&amp;#34;\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b&amp;#34;&lt;/span&gt; --input access.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="八组合实战"&gt;八、组合实战
&lt;/h2&gt;&lt;h3 id="81-远程调试-java-应用"&gt;8.1 远程调试 Java 应用
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Xshell SSH&lt;/strong&gt; 到测试服务器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tail -f catalina.out&lt;/code&gt; 看实时日志&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tesseract&lt;/strong&gt; 截图识别 → 提取关键错误&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chrome + Fiddler&lt;/strong&gt; 复现问题&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="82-批量运维脚本"&gt;8.2 批量运维脚本
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;FileZilla&lt;/strong&gt; 传脚本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Xshell 标签页&lt;/strong&gt;多机器并发执行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zhexi&lt;/strong&gt; 处理输出日志&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Graphviz&lt;/strong&gt; 把&amp;quot;服务器状态图&amp;quot;画出来&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="九常见问题"&gt;九、常见问题
&lt;/h2&gt;&lt;h3 id="91-xshell-突然不能复制粘贴"&gt;9.1 Xshell 突然不能复制粘贴
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;检查 &lt;code&gt;工具 → 选项 → 键盘和鼠标 → 中间键&lt;/code&gt; 设置&lt;/li&gt;
&lt;li&gt;重启 Xshell（最暴力但有效）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检查是否启用了&amp;quot;宏&amp;quot;&lt;/strong&gt;——&lt;code&gt;工具 → 宏 → 录制宏&lt;/code&gt; 可能误占用剪贴板&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="92-filezilla-无法连接到服务器"&gt;9.2 FileZilla &amp;ldquo;无法连接到服务器&amp;rdquo;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;防火墙是否放行 22 端口&lt;/li&gt;
&lt;li&gt;服务器端 &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt; 中 &lt;code&gt;PasswordAuthentication yes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;客户端 &lt;code&gt;连接超时&lt;/code&gt; 调大到 60s&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="93-chrome-启动慢"&gt;9.3 Chrome 启动慢
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;chrome://flags/#enable-site-per-process&lt;/code&gt; 关闭能加速但&lt;strong&gt;牺牲安全&lt;/strong&gt;。
&lt;code&gt;chrome://settings/clearBrowserData&lt;/code&gt; 清掉过多缓存。&lt;/p&gt;
&lt;h3 id="94-graphviz-中文乱码"&gt;9.4 Graphviz 中文乱码
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;digraph G {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; node [fontname=&amp;#34;Microsoft YaHei&amp;#34;];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;开始&amp;#34; -&amp;gt; &amp;#34;处理&amp;#34; -&amp;gt; &amp;#34;结束&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者 &lt;code&gt;dot -Tpng:cairo:file&lt;/code&gt; 用 cairo 后端。&lt;/p&gt;
&lt;h3 id="95-tesseract-中文识别率低"&gt;9.5 Tesseract 中文识别率低
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;装 &lt;code&gt;chi_sim&lt;/code&gt; + &lt;code&gt;eng&lt;/code&gt; 混合模型&lt;/li&gt;
&lt;li&gt;图像预处理（OpenCV 二值化）&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;--psm 6&lt;/code&gt; 假设是单块文本&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="十下一步"&gt;十、下一步
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;想看数据库连接：&lt;strong&gt;[2013-09-15 Windows 终端与 Navicat 工具链]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;想看抓包调试：&lt;strong&gt;[2016-11-15 数据库客户端实战：MySQL / Redis / ES / MQTT]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;想看 Git 工作流：&lt;strong&gt;[2014-11-15 Git 与版本控制]&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;本文写于 2013 年，回看当时&lt;/strong&gt;：Xshell 至今仍是 Windows SSH 客户端的事实标准，FileZilla 仍是 FTP/SFTP 首选；&lt;strong&gt;Chrome 早就吃掉了 IE 份额，但 2013 年兼容 IE 6-8 仍是 Web 开发的必备技能&lt;/strong&gt;——这篇工具链 10 年后大部分仍然适用。&lt;/p&gt;

 &lt;/blockquote&gt;</description></item></channel></rss>