[{"data":1,"prerenderedAt":341},["ShallowReactive",2],{"blog-edge-cache-static-generation":3,"blog-prev-edge-cache-static-generation":132,"blog-next-edge-cache-static-generation":231},{"id":4,"title":5,"author":6,"body":7,"canonical":116,"category":117,"cover":116,"date":118,"description":119,"draft":120,"extension":121,"keywords":116,"meta":122,"navigation":123,"noindex":120,"ogImage":116,"path":124,"seo":125,"seoDescription":116,"seoTitle":116,"stem":126,"tags":127,"updated":116,"__hash__":131},"blog\u002Fblog\u002Fedge-cache-static-generation.md","静态化加边缘缓存，把首屏压进一秒内","元析智能",{"type":8,"value":9,"toc":105},"minimark",[10,14,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102],[11,12,13],"p",{},"2026 年 10 月我们给一个文档站做了静态化和边缘缓存，首字节从 900 毫秒降到 120 毫秒，首屏进入一秒内。改动不涉及业务逻辑，只是把渲染的结果提前算好，放到离用户近的地方。",[15,16,17],"h2",{"id":17},"静态化解决什么",[11,19,20],{},"动态渲染每次请求都要查数据、拼模板，再快也有几百毫秒。",[11,22,23],{},"静态化就是提前生成 HTML，请求来了直接返回文件。服务器压力也降下来了，一个静态文件能扛住大量并发。",[11,25,26],{},"对搜索引擎也有好处：返回稳定、内容完整、不依赖 JS。",[15,28,29],{"id":29},"哪些页面能静态化",[11,31,32],{},"营销页、产品页、文档页、博客文章、案例页，这些内容变化不频繁，全部可以。",[11,34,35],{},"不能静态化的是个性化内容：登录后的后台、购物车、实时数据看板。",[11,37,38],{},"中间状态是列表页和搜索页。可以静态化基础部分，动态部分用客户端填充，但要小心 CLS。",[15,40,41],{"id":41},"边缘缓存怎么配",[11,43,44],{},"把静态文件推到 CDN，缓存时间设长，用文件名哈希做版本。",[11,46,47],{},"HTML 的缓存时间设短，五分钟到一小时，配合主动刷新。",[11,49,50],{},"缓存键只保留路径，别把查询参数和 Cookie 算进去，否则命中率会很低。",[15,52,53],{"id":53},"内容更新怎么触发",[11,55,56],{},"三种方式。",[11,58,59],{},"第一，增量构建。内容变了只重新生成受影响的页面，几分钟完成。",[11,61,62],{},"第二，webhook 触发。CMS 发布时调用构建接口，全量或增量重建。",[11,64,65],{},"第三，短 TTL 兜底。就算触发失败，缓存到期也会自动回源，最多晚一小时。",[11,67,68],{},"三种一起用最稳，我们给客户的配置就是这样。",[15,70,71],{"id":71},"预热很重要",[11,73,74],{},"静态化之后第一批访问的用户，如果缓存还是冷的，体验和以前一样。",[11,76,77],{},"我们的做法是发布后主动请求一遍核心页面，把缓存预热。二十个页面，两分钟跑完。",[11,79,80],{},"预热脚本放在发布流程里，自动执行，别靠人记得。",[15,82,83],{"id":83},"一个常见的误解",[11,85,86],{},"静态化不等于不用服务器。构建、预热、缓存刷新都需要服务，只是请求量大时不再实时渲染。",[11,88,89],{},"还有一层容易忽略：静态文件如果没开压缩，传输体积会大两三倍。构建产物要先压好再上传，别指望 CDN 自己处理所有格式。",[15,91,92],{"id":92},"一个态度",[11,94,95],{},"静态化是 TTFB 优化里最彻底的一招，能到百毫秒级。但它的前提是内容能提前算好。",[11,97,98],{},"对于需要实时数据的站，静态化只能覆盖一部分页面，别硬上。",[11,100,101],{},"还有一个隐形成本：构建时间。几千页的站，全量构建可能要十几分钟，所以增量构建是必须的。",[11,103,104],{},"我们给客户的验收标准是：核心页面首字节低于 300 毫秒，首屏 LCP 低于 1.5 秒。做到这两个数，性能这条线基本不用再操心。",{"title":106,"searchDepth":107,"depth":107,"links":108},"",2,[109,110,111,112,113,114,115],{"id":17,"depth":107,"text":17},{"id":29,"depth":107,"text":29},{"id":41,"depth":107,"text":41},{"id":53,"depth":107,"text":53},{"id":71,"depth":107,"text":71},{"id":83,"depth":107,"text":83},{"id":92,"depth":107,"text":92},null,"技术SEO","2026-10-26","一个文档站改成静态生成加边缘缓存，首字节从 900 毫秒降到 120 毫秒。这篇写哪些页面能静态化、缓存怎么失效、内容更新怎么触发。",false,"md",{},true,"\u002Fblog\u002Fedge-cache-static-generation",{"title":5,"description":119},"blog\u002Fedge-cache-static-generation",[128,129,130],"静态化","边缘缓存","TTFB","sy-zNNIR7TINDZIiu3RNeDIdS1F9nCyefVfmqTOHvMU",{"id":133,"title":134,"author":6,"body":135,"canonical":116,"category":117,"cover":116,"date":220,"description":221,"draft":120,"extension":121,"keywords":116,"meta":222,"navigation":123,"noindex":120,"ogImage":116,"path":223,"seo":224,"seoDescription":116,"seoTitle":116,"stem":225,"tags":226,"updated":116,"__hash__":230},"blog\u002Fblog\u002Fanchor-text-strategy.md","内链锚文本：同一个词链 40 次反而没用",{"type":8,"value":136,"toc":212},[137,140,143,146,149,152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209],[11,138,139],{},"内链锚文本不是关键词堆得越多越好。我们做过对比：同一个目标页用 40 个相同锚文本链接，排名不如用 8 个自然锚文本的页面。",[15,141,142],{"id":142},"一个真实的实验",[11,144,145],{},"2025 年 11 月，我们在两个内容结构相似的客户站上做了对照。",[11,147,148],{},"A 站：一个核心产品页，站内有 40 条内链指向它，锚文本全部是\"项目管理软件\"。",[11,150,151],{},"B 站：同样一个核心产品页，站内有 8 条内链指向它，锚文本分别是\"项目管理工具\"\"项目排期系统\"\"团队协作平台\"\"看看这个功能\"等自然说法。",[11,153,154],{},"三个月后，B 站那个页面的目标词排名从第 12 升到第 6，A 站从第 11 升到第 13。",[11,156,157],{},"样本只有两个站，但方向很清楚：堆同一个锚文本，效果不如自然分布。",[15,159,160],{"id":160},"为什么堆锚文本没用",[11,162,163],{},"第一，过度优化的锚文本分布本身就是异常信号。正常网站的内链，锚文本是多样化的，因为不同页面的上下文不同。",[11,165,166],{},"第二，锚文本只影响\"这个页面讲什么\"的判断，重复 40 次不会加强这个判断，只会显得刻意。",[11,168,169],{},"第三，堆锚文本的内链往往质量差：为了塞链接而加的链接，上下文不相关，反而稀释权重。",[15,171,172],{"id":172},"锚文本的三个原则",[11,174,175],{},"第一，锚文本要描述目标页的内容，不是复制关键词。用户点之前应该能猜到点进去看到什么。",[11,177,178],{},"第二，多样化。同一个目标页，用不同的说法链接，从不同角度的页面链过去。",[11,180,181],{},"第三，控制数量。一个目标页有 5 到 15 条高质量内链，比 50 条机械链接有用。",[15,183,184],{"id":184},"别把所有链接都写关键词",[11,186,187],{},"我们见过客户把导航、页脚、侧边栏里所有指向产品页的链接都写成关键词，一个页面出现 20 多次同样的锚文本。",[11,189,190],{},"这种做法不仅没用，还可能触发过度优化的判断。至少把一部分改成\"了解更多\"\"查看功能\"\"定价\"这类自然说法。",[15,192,193],{"id":193},"怎么改",[11,195,196],{},"第一步，导出站内链接，按目标页分组，看每个目标页有多少条内链、锚文本分布。",[11,198,199],{},"第二步，锚文本单一且数量超过 15 条的，改掉一部分，换成自然的描述。",[11,201,202],{},"第三步，给重要的目标页补几条来自相关内容的链接，锚文本用上下文里的自然说法。",[15,204,205],{"id":205},"判断",[11,207,208],{},"锚文本是\"描述\"，不是\"投票\"。你越想让搜索引擎记住一个词，越应该用自然的表达说清楚这个页面是什么。",[11,210,211],{},"把内链当成给用户指路，锚文本自然就对了。",{"title":106,"searchDepth":107,"depth":107,"links":213},[214,215,216,217,218,219],{"id":142,"depth":107,"text":142},{"id":160,"depth":107,"text":160},{"id":172,"depth":107,"text":172},{"id":184,"depth":107,"text":184},{"id":193,"depth":107,"text":193},{"id":205,"depth":107,"text":205},"2026-10-25","内链锚文本不是关键词堆得越多越好。我们做过对比：同一个目标页用 40 个相同锚文本链接，排名不如用 8 个自然锚文本的页面。三个原则、一次实验数据和一个常见误区都在这篇，看完能立刻对照着改。",{},"\u002Fblog\u002Fanchor-text-strategy",{"title":134,"description":221},"blog\u002Fanchor-text-strategy",[227,228,229],"内链","锚文本","页面权重","j-SlYAnFSYyfK6DQm7chAc4w8bDbP4U2wS26_NqGiwE",{"id":232,"title":233,"author":6,"body":234,"canonical":116,"category":329,"cover":116,"date":330,"description":331,"draft":120,"extension":121,"keywords":116,"meta":332,"navigation":123,"noindex":120,"ogImage":116,"path":333,"seo":334,"seoDescription":116,"seoTitle":116,"stem":335,"tags":336,"updated":116,"__hash__":340},"blog\u002Fblog\u002Fcontent-batch-quality.md","批量内容的质量底线：模板化到什么程度算过头",{"type":8,"value":235,"toc":320},[236,239,242,245,248,251,254,257,260,263,266,269,272,275,278,281,284,287,290,293,296,299,302,305,308,311,314,317],[11,237,238],{},"批量生产内容不是原罪，模板化过头才是。我们给批量内容定了四条底线：每篇有独家信息、结构可以有模板、案例不能重复、数据必须核实。",[15,240,241],{"id":241},"批量生产的两种做法",[11,243,244],{},"第一种，模板化生产：固定结构、固定句式，像填表一样写。效率高，但容易同质化。",[11,246,247],{},"第二种，模块化生产：固定的是\"模块清单\"（比如每篇必须有：问题、方案、数据、判断），但每个模块的内容独立写。",[11,249,250],{},"我们选第二种。效率比纯手工高 40%，质量比填表式高得多。",[15,252,253],{"id":253},"什么可以模板化",[11,255,256],{},"结构：每篇都用\"问题、方案、数据、判断\"四段，读者读起来顺畅。",[11,258,259],{},"格式：标题层级、列表、表格用法，统一。",[11,261,262],{},"流程：选题、审稿、发布的标准动作，统一。",[11,264,265],{},"这些模板化不会伤害内容，反而让读者更容易读。",[15,267,268],{"id":268},"什么绝对不能",[11,270,271],{},"第一，案例不能模板化。每篇必须是不同的客户、不同的场景。写\"某客户\"然后编一个通用案例，一眼就能看出来。",[11,273,274],{},"第二，数据不能模板化。每个数据都要有来源，不能\"大约\"\"业内人士估计\"。",[11,276,277],{},"第三，判断不能模板化。每篇的结论应该基于这篇的事实，不能所有文章都得出同一个结论。",[11,279,280],{},"第四，开头不能模板化。开头是读者决定读不读的地方，模板化开头会直接劝退。",[15,282,283],{"id":283},"一个越界的案例",[11,285,286],{},"2025 年 8 月，一个客户让我们批量写 200 篇\"行业解决方案\"页面，要求是同一套模板，换行业名。",[11,288,289],{},"我们评估后拒绝了。原因：200 个行业里，真正有搜索需求、有客户案例的不到 30 个。其余 170 个就是模板套壳，写出来也不会有排名，还会拉低整站质量。",[11,291,292],{},"后来只做了 30 个，每个都有真实案例和数据，效果很好。",[15,294,295],{"id":295},"我们的底线清单",[11,297,298],{},"每篇发布前问四个问题：这篇有没有别人写不出来的内容？案例是不是这个客户真实的？数据能不能找到来源？结论是不是这篇推导出来的？",[11,300,301],{},"四个都是\"是\"，发；有一个\"否\"，回去改。",[15,303,304],{"id":304},"一个提醒",[11,306,307],{},"批量内容的效率优势，建立在\"有足够素材\"的基础上。素材不够，批量就是批量制造垃圾。",[11,309,310],{},"我们一般先攒素材库：客户案例、实测数据、常见问题。素材够 100 篇的量，才开批量。",[15,312,313],{"id":313},"一句判断",[11,315,316],{},"批量不是错，错的是\"为了数量放弃判断\"。模板可以统一格式，不能统一思想。",[11,318,319],{},"200 篇平庸内容，比 30 篇有判断的内容，伤害大得多。",{"title":106,"searchDepth":107,"depth":107,"links":321},[322,323,324,325,326,327,328],{"id":241,"depth":107,"text":241},{"id":253,"depth":107,"text":253},{"id":268,"depth":107,"text":268},{"id":283,"depth":107,"text":283},{"id":295,"depth":107,"text":295},{"id":304,"depth":107,"text":304},{"id":313,"depth":107,"text":313},"内容运营","2026-10-27","批量生产内容不是原罪，模板化过头才是。我们给批量内容定了四条底线：每篇有独家信息、结构可以有模板、案例不能重复、数据必须核实。一个批量 200 篇翻车的案例和我们的检查表都在这篇，四条底线要守住。",{},"\u002Fblog\u002Fcontent-batch-quality",{"title":233,"description":331},"blog\u002Fcontent-batch-quality",[337,338,339],"批量内容","内容质量","内容生产","AF6J5N8U_1ccSpPLqaP8s91isAKofOogCF2KJvUvygU",1794088100358]