Skip to content

Commit 01a8eaf

Browse files
committed
docs: 网络面试题补充与文章内容更新
- 补充 RSA vs ECDHE、TCP 字节流/报文、TIME_WAIT 面试题摘要 - 知识星球介绍页和面试指南文案改写,SEO 优化 - 文章 footer snippet 精简,移除冗余广告引导 - 统一移除部分文章内的 small-advertisement snippet 引用 - VuePress config 简化 mermaid 组件路径解析 - .gitignore 添加 dist.zip
1 parent 4a4378d commit 01a8eaf

20 files changed

Lines changed: 435 additions & 195 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,4 @@ scripts/docsearch-index.mjs
2323
PERFORMANCE_NOTES.md
2424
docs/cs-basics/network/TODO.md
2525
PERFORMANCE_NOTES.md
26+
dist.zip

SEO_STATIC_SITE_PLAYBOOK.md

Lines changed: 353 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,353 @@
1+
# VuePress 静态站 SEO 优化复用手册
2+
3+
这份文档沉淀 JavaGuide 这次 SEO、搜索、sitemap、robots、IndexNow 和部署链路优化经验,适合迁移到另一个 VuePress + Theme Hope 静态内容站点。
4+
5+
## 适用场景
6+
7+
- 文档站、技术博客、知识库、教程站。
8+
- 使用 VuePress / VuePress Theme Hope / Vite 静态构建。
9+
- 希望优化 Bing、Google 等搜索引擎收录和排序。
10+
- 站内搜索使用 Algolia DocSearch,或准备从本地 `dist` 生成搜索索引。
11+
12+
## 核心原则
13+
14+
- 先做可抓取、可索引、可验证,再做标题和内容优化。
15+
- sitemap 的更新频率要符合真实更新节奏,不要全站都写 `weekly``daily`
16+
- 首页、栏目页、专题页承担关键词入口;普通文章承担长尾词和具体问题。
17+
- 首屏正文要先给搜索引擎和用户一段真实内容,广告、提示、组件不要压在最前面。
18+
- 站内搜索索引尽量从本地构建产物 `dist` 生成,避免线上抓取受 CDN、反爬、缓存和动态渲染影响。
19+
- 每次部署后要同时处理静态文件、CDN、sitemap、robots、搜索索引和搜索引擎提交。
20+
21+
## 一次完整优化的顺序
22+
23+
### 1. 先盘点站点现状
24+
25+
重点检查:
26+
27+
- `docs/.vuepress/config.ts`
28+
- `docs/.vuepress/theme.ts`
29+
- `docs/.vuepress/navbar.ts`
30+
- `docs/.vuepress/public/robots.txt`
31+
- `package.json`
32+
- `docs/README.md`
33+
- 核心栏目 `README.md`
34+
- 生成后的 `dist/sitemap.xml`
35+
- 生成后的 `dist/robots.txt`
36+
37+
常用命令:
38+
39+
```bash
40+
rg -n "seo|sitemap|robots|docsearch|search|head|canonical|pagePatterns" docs/.vuepress package.json
41+
rg -n "^title:|^description:|^sitemap:|^head:" docs -g "*.md"
42+
pnpm docs:build
43+
```
44+
45+
### 2. 明确关键词和页面分工
46+
47+
先列出目标关键词,再决定谁来承接:
48+
49+
- 品牌词:首页承接。
50+
- 核心大词:专题页或栏目页承接。
51+
- 中等竞争词:高质量聚合页承接。
52+
- 长尾问题词:具体文章承接。
53+
54+
示例:
55+
56+
- `Java 面试``/home.html` 或面试专题页承接。
57+
- `AI 应用开发面试``/ai/` 或 AI 面试指南承接。
58+
- `计算机基础面试题``/cs-basics/` 承接。
59+
- `操作系统面试题`:具体操作系统文章承接。
60+
61+
### 3. 配置技术 SEO
62+
63+
建议在主题配置里启用或补齐:
64+
65+
- canonical。
66+
- Open Graph。
67+
- sitemap。
68+
- feed。
69+
- JSON-LD。
70+
- robots。
71+
- 明确排除不该索引的页面。
72+
73+
sitemap 建议:
74+
75+
- 全站默认 `monthly`
76+
- 首页、栏目入口、专题入口显式 `weekly`
77+
- 普通文章不单独写 `weekly`,除非真实频繁更新。
78+
- 草稿、TODO、snippet、内部片段不进入 sitemap。
79+
80+
robots 建议:
81+
82+
- 优先由 SEO / Sitemap 插件生成。
83+
- 不要在 `public/robots.txt` 和插件生成逻辑之间制造冲突。
84+
- 生成结果中应包含:
85+
86+
```txt
87+
Sitemap: https://example.com/sitemap.xml
88+
```
89+
90+
### 4. 优化页面 frontmatter
91+
92+
核心页面建议具备:
93+
94+
```yaml
95+
---
96+
title: 页面主关键词 + 清晰主题
97+
description: 用一句自然的话说明覆盖范围、适用人群和页面价值。
98+
sitemap:
99+
changefreq: weekly
100+
priority: 1
101+
head:
102+
- - meta
103+
- name: keywords
104+
content: 核心关键词,相关关键词,长尾关键词
105+
---
106+
```
107+
108+
普通文章建议:
109+
110+
- 写好 `title``description`
111+
- 可以补充 `keywords`
112+
- 默认继承全站 `monthly`
113+
- 不要为了“看起来重要”给每篇文章都写高 priority。
114+
115+
### 5. 优化正文结构
116+
117+
每个重点页面尽量做到:
118+
119+
- H1 与页面主题一致。
120+
- 首屏先有一段总结性正文。
121+
- 广告、提示块、卡片组件不要放在正文前面。
122+
- 核心内容尽量出现在页面前半部分。
123+
- 内链锚文本要明确,例如“Java 面试指南”“AI Agent 面试题”,不要写“点击这里”。
124+
- 同一主题下的文章互相链接,栏目页链接核心文章,核心文章回链栏目页。
125+
126+
### 6. 处理站内搜索
127+
128+
推荐做法:
129+
130+
- 关闭 VuePress 本地搜索,避免生成过大的客户端 `searchIndex.js`
131+
- 使用 Algolia DocSearch。
132+
- 构建前端时只暴露 Search-Only API Key。
133+
- 写索引时使用 Admin API Key,并只放在本地或 CI Secret。
134+
- 从本地 `dist` 写索引,而不是让 crawler 在线抓取。
135+
136+
示例命令:
137+
138+
```bash
139+
pnpm docs:build
140+
141+
DOCSEARCH_APP_ID=你的 Algolia App ID \
142+
DOCSEARCH_INDEX_NAME=你的索引名 \
143+
DOCSEARCH_SOURCE_DIR=dist \
144+
DOCSEARCH_ADMIN_API_KEY=你的写入索引专用 Key \
145+
pnpm docsearch:index
146+
```
147+
148+
### 7. 增加 IndexNow 提交
149+
150+
IndexNow Key 不需要平台申请,可以自己生成:
151+
152+
```bash
153+
node -e "console.log(crypto.randomUUID())"
154+
```
155+
156+
然后在站点根目录部署:
157+
158+
```txt
159+
https://example.com/{INDEXNOW_KEY}.txt
160+
```
161+
162+
文件内容就是 key 本身。
163+
164+
提交示例:
165+
166+
```bash
167+
INDEXNOW_KEY=你的 IndexNow Key \
168+
pnpm indexnow:submit / /home.html /ai/
169+
```
170+
171+
大范围更新后可以提交 sitemap:
172+
173+
```bash
174+
INDEXNOW_KEY=你的 IndexNow Key \
175+
pnpm indexnow:submit --sitemap
176+
```
177+
178+
### 8. 规范部署流程
179+
180+
VuePress / Vite 会生成带 hash 的静态资源。部署时不要每次清空整个站点目录,否则旧 HTML 或旧客户端可能引用不到旧 chunk。
181+
182+
推荐策略:
183+
184+
- 非 assets 文件跟随新版本删除。
185+
- `/assets/` 只增量覆盖,保留旧 hash 文件一段时间。
186+
- Google/Bing/IndexNow 验证文件部署后恢复。
187+
- CDN 优先刷新 HTML、sitemap、robots 和变更页面,不要默认全站刷新。
188+
189+
推荐脚本:
190+
191+
```bash
192+
set -e
193+
194+
SITE_DIR="/www/wwwroot/example.com"
195+
DIST_DIR="/github/dist"
196+
VERIFY_FILE_GOOGLE="/www/wwwroot/google-verification.html"
197+
VERIFY_FILE_BING="/www/wwwroot/bing-verification.txt"
198+
INDEXNOW_KEY_FILE="/www/wwwroot/your-indexnow-key.txt"
199+
200+
mkdir -p "$SITE_DIR/assets"
201+
202+
rsync -av --delete \
203+
--exclude='assets/' \
204+
"$DIST_DIR/" "$SITE_DIR/"
205+
206+
rsync -av \
207+
"$DIST_DIR/assets/" "$SITE_DIR/assets/"
208+
209+
cp "$VERIFY_FILE_GOOGLE" "$SITE_DIR/"
210+
cp "$VERIFY_FILE_BING" "$SITE_DIR/"
211+
cp "$INDEXNOW_KEY_FILE" "$SITE_DIR/"
212+
```
213+
214+
### 9. 部署后验证
215+
216+
基础验证:
217+
218+
```bash
219+
curl -I https://example.com/
220+
curl -s https://example.com/robots.txt
221+
curl -s https://example.com/sitemap.xml | head
222+
```
223+
224+
sitemap 抽查:
225+
226+
```bash
227+
node - <<'NODE'
228+
const fs = require("fs");
229+
const xml = fs.readFileSync("dist/sitemap.xml", "utf8");
230+
const counts = {};
231+
for (const m of xml.matchAll(/<changefreq>(.*?)<\/changefreq>/g)) {
232+
counts[m[1]] = (counts[m[1]] || 0) + 1;
233+
}
234+
console.log(counts);
235+
NODE
236+
```
237+
238+
重点确认:
239+
240+
- `robots.txt` 能访问。
241+
- `sitemap.xml` 能访问。
242+
- sitemap 中没有 TODO、snippet、内部测试页面。
243+
- 首页和栏目页是 `weekly`
244+
- 普通文章是 `monthly`
245+
- IndexNow key 文件能访问。
246+
- Bing Webmaster Tools 和 Google Search Console 能正常抓取。
247+
248+
## 常见坑
249+
250+
- 全站都写 `daily``weekly`,但内容几个月才更新一次。
251+
- 每篇文章都写高 priority,导致 sitemap 信号失真。
252+
- `public/robots.txt` 覆盖插件生成结果,导致 sitemap 丢失。
253+
- TODO、snippet、草稿页被生成成正式页面。
254+
- 广告或组件放在页面第一屏,正文太靠后。
255+
- 只优化 meta,不补正文和内链。
256+
- 部署时删除旧 assets,导致旧页面加载 chunk 404。
257+
- 把 Admin API Key、IndexNow Key 提交到公开仓库。
258+
259+
## 可复用提示词
260+
261+
### 总提示词
262+
263+
```text
264+
你是一个熟悉 VuePress、VuePress Theme Hope、静态站 SEO、Algolia DocSearch、sitemap、robots、IndexNow 和 CDN 部署的技术 SEO 工程师。
265+
266+
请你阅读当前仓库,帮我对这个静态文档站做一次系统 SEO 优化。目标是提升 Bing 和 Google 对核心关键词的收录和排名,同时不要破坏现有构建、主题配置和部署流程。
267+
268+
请按这个顺序执行:
269+
270+
1. 先检查 VuePress 配置、主题配置、navbar、robots、sitemap、package scripts 和核心栏目 README。
271+
2. 判断当前站点是否存在本地搜索索引过大、robots/sitemap 冲突、草稿页面被索引、sitemap 频率不真实、首页和栏目页首屏正文不足等问题。
272+
3. 为首页、核心栏目页和重点专题页优化 title、description、keywords、首屏正文、内链锚文本和 sitemap 配置。
273+
4. 全站 sitemap 默认使用 monthly,只给首页、栏目页、专题入口保留 weekly。
274+
5. 排除 TODO、snippet、草稿、内部页面进入 sitemap 和正式页面构建。
275+
6. 如果站内搜索使用 Algolia DocSearch,请保留前端 Search-Only Key 的配置入口,并提供从本地 dist 写入索引的部署命令;Admin Key 不能提交到仓库。
276+
7. 增加或整理 IndexNow 提交流程,支持提交变更 URL 和 sitemap。
277+
8. 整理一份每次部署后的 SEO 和搜索索引检查清单。
278+
9. 最后运行构建和必要的 lint,抽查 dist/sitemap.xml、dist/robots.txt 和关键页面生成结果。
279+
280+
约束:
281+
- 不要引入和现有主题风格冲突的新框架。
282+
- 不要为了 SEO 堆砌关键词。
283+
- 不要把密钥写入仓库。
284+
- 不要把普通文章全部标成 weekly 或高 priority。
285+
- 不要删除用户已有的无关改动。
286+
287+
请直接修改文件,并在最后总结改了什么、如何验证、部署后还需要手动做什么。
288+
```
289+
290+
### 只做审计的提示词
291+
292+
```text
293+
请只审计这个 VuePress 静态站的 SEO 和部署链路,暂时不要改文件。
294+
295+
重点检查:
296+
- robots.txt 和 sitemap 是否正确生成。
297+
- sitemap 是否包含不该收录的 TODO、snippet、草稿页。
298+
- sitemap changefreq 和 priority 是否符合真实更新频率。
299+
- 首页、栏目页、专题页是否有清晰 title、description、首屏正文和内链。
300+
- 是否存在本地搜索索引过大影响性能的问题。
301+
- Algolia DocSearch 的前端 key 和写入 key 是否边界清晰。
302+
- 部署方式是否会删除旧 assets 导致 chunk 404。
303+
- 是否有 IndexNow 或搜索引擎提交流程。
304+
305+
请输出问题列表、影响、建议修改文件和优先级。
306+
```
307+
308+
### 只做重点栏目优化的提示词
309+
310+
```text
311+
请帮我优化这个 VuePress 站点的某个重点栏目页:{栏目路径}。
312+
313+
目标关键词:
314+
- {关键词1}
315+
- {关键词2}
316+
- {关键词3}
317+
318+
请完成:
319+
- 优化 frontmatter 的 title、description、keywords。
320+
- 如果它是栏目入口页,设置合理的 sitemap,例如 weekly;如果是普通文章,继承全站默认 monthly。
321+
- 在广告、提示块或组件前补一段自然的首屏介绍。
322+
- 增加指向核心文章的内链,锚文本要包含明确主题词。
323+
- 不要堆砌关键词,不要改变文章事实。
324+
- 修改后运行 markdownlint 和构建验证。
325+
```
326+
327+
### 部署清单提示词
328+
329+
```text
330+
请帮我为这个 VuePress/Vite 静态站整理部署清单。
331+
332+
要求:
333+
- 构建命令区分普通 build 和 clean build。
334+
- 部署脚本要保留旧 assets,但删除旧 HTML、sitemap、robots 等非 assets 文件。
335+
- 写清楚 Google/Bing 验证文件和 IndexNow key 文件如何恢复。
336+
- 写清楚部署后 CDN 应刷新哪些路径。
337+
- 写清楚什么时候需要重建 Algolia DocSearch 索引。
338+
- 写清楚什么时候提交 IndexNow 变更 URL,什么时候提交 sitemap。
339+
- 给出部署后 curl 验证命令。
340+
```
341+
342+
## 最小落地清单
343+
344+
如果时间有限,优先完成这几项:
345+
346+
- 确认 `robots.txt` 包含 sitemap。
347+
- 确认 `sitemap.xml` 生成正确,且没有草稿页。
348+
- 全站默认 `monthly`,首页和栏目页 `weekly`
349+
- 核心入口页补齐 title、description、首屏正文和内链。
350+
- 关闭本地搜索索引,使用 DocSearch 或其他远程搜索。
351+
- 部署后提交 IndexNow。
352+
- 搜索索引从 `dist` 生成。
353+
- 部署时保留旧 `/assets/*`

docs/.vuepress/config.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
import { createRequire } from "node:module";
2-
import { fileURLToPath } from "node:url";
3-
import { dirname, join } from "node:path";
42
import { viteBundler } from "@vuepress/bundler-vite";
53
import { defineUserConfig } from "vuepress";
64
import theme from "./theme.js";
75

86
const require = createRequire(import.meta.url);
9-
const __dirname = dirname(fileURLToPath(import.meta.url));
10-
const mermaidComponentPath = join(
11-
dirname(require.resolve("@vuepress/plugin-markdown-chart/package.json")),
12-
"lib/client/components/Mermaid.js",
7+
const mermaidComponentPath = require.resolve(
8+
"@vuepress/plugin-markdown-chart/client/components/Mermaid.js",
139
);
1410

1511
export default defineUserConfig({

docs/about-the-author/zhishixingqiu-two-years.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
---
2-
title: 我的知识星球 6 岁了!
3-
description: JavaGuide知识星球介绍,提供Java面试指北专栏、简历修改、一对一答疑等服务,已帮助9000+球友提升求职竞争力。
2+
title: JavaGuide 知识星球介绍:Java 面试资料、简历修改与实战项目
3+
description: JavaGuide知识星球介绍,提供Java面试指北、后端面试资料、简历修改、一对一答疑、Java实战项目和大模型项目教程,已帮助9000+球友提升求职竞争力。
44
category: 知识星球
55
star: 2
6+
head:
7+
- - meta
8+
- name: keywords
9+
content: JavaGuide知识星球,Java知识星球,Java面试资料,Java面试指北,Java后端面试,简历修改,简历优化,一对一答疑,Java实战项目,后端实战项目,大模型实战项目,AI面试项目,JavaGuide星球
610
---
711

12+
JavaGuide 知识星球是我长期维护的 **Java 后端面试与求职成长社群**,主要面向正在准备校招、社招、转行和技术进阶的同学。星球里会持续更新 **Java 面试资料、后端高频面试题、简历修改、一对一答疑、实战项目教程、源码解析专栏** 等内容,目标很简单:帮你少走弯路,更高效地准备面试和提升项目竞争力。
13+
14+
如果你正在找系统的 Java 面试资料、想优化简历、需要一个能写进简历的 Java 实战项目,或者希望有人结合你的情况给出具体建议,这篇文章会完整介绍 JavaGuide 知识星球能提供什么、适合哪些人、为什么值得加入。
15+
816
**2019 年 12 月 29 号**,经过了大概一年左右的犹豫期,我正式确定要开始做一个自己的星球,帮助学习 Java 和准备 Java 面试的同学。一转眼,已经六年了。感谢大家一路陪伴,我会信守承诺,继续认真维护这个纯粹的 Java 知识星球,不让信任我的读者失望。
917

1018
![星球创立日期](https://oss.javaguide.cn/xingqiu/640-20230727145252757.png)

0 commit comments

Comments
 (0)