155–160个unicode字符是description安全上限,因google/bing按字符而非字节计数;移动端serp仅显示前120字符,核心信息须前置60字符内;失效主因非语法错误,而是状态码异常、robots限制、内容偏离或js动态注入失效。

155–160 个 Unicode 字符(含空格)是安全上限,不是“越多越好”,超了大概率被截断在语义断裂处。
为什么是 155–160 字符,而不是字节数或像素?
Google 和 Bing 按 Unicode 字符计数:一个汉字、一个英文字母、一个空格、一个标点,都算 1 字符。UTF-8 编码下中文占 3 字节,但搜索引擎不看字节——所以别用编辑器“字节数统计”功能校验,它会误导你。
- 用浏览器控制台直接测:
"修复 useNavigate 异步报错的 3 种方法".length→ 返回24(不是字节) - 移动端 SERP 通常只显示前 120 字符,所以核心动词+对象+限制条件必须塞进前 60 字,比如:
用 fetch() 替代 XMLHttpRequest 的 3 种安全写法|含错误重试与超时控制 - 全角空格、换行符、制表符会被 HTML 解析器压缩为空格,别指望靠它们“伪装长度”
写了 description 却没出现在搜索结果里?先查这 4 个硬性条件
不是代码写错了,而是搜索引擎压根没采用它。常见失效场景比语法错误更普遍:
- 页面返回非
200状态码(如301、404、503),爬虫连 content 都不读 -
robots.txt明确禁止抓取该路径,或页面带<meta name="robots" content="noindex">,description 不进索引队列 - 内容和页面实际主题严重偏离:商品页写“限时折扣”,但商品已下架;技术页写“前端教程”,正文第一行却是
// 支持注释的 JSON 解析器,引擎会直接提取那行 - SPA 路由切换后用
useEffect动态改<meta name="description">,旧版 Googlebot 不执行 JS,抓到的是初始占位文本
动态页面(Next.js / VuePress / CMS)最容易踩的坑
手写静态 HTML 没问题,一上框架就容易出问题——不是不会写,而是没写对时机和位置:
- Next.js 必须在
getStaticProps或getServerSideProps中通过next/head注入,客户端 JS 改无效 - VuePress 的
description: "xxx"前置数据,只有默认主题或明确读取page.frontmatter.description的自定义主题才生效 - CMS 后台若不限输入长度,运营可能填 300 字+ emoji;后端渲染时必须强制截断至 160 字符,并过滤掉
、<code>>、"等破坏 HTML 结构的字符 - 模板中误用全局变量,比如写成
{{ site.description }}而非{{ page.description }},导致所有文章页 description 雷同
真正难的不是“怎么写”,而是让每个 URL 对应的 content 值,在服务端首次输出时就真实、唯一、可控——JS 注入、CDN 缓存、CMS 字段映射错位,任何一个环节松动,description 就失效。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











