最直接的做法是采用服务端渲染或静态站点生成。这意味着 HTML 源码中直接包含完整的文本内容、链接和元数据,不需要浏览器执行 JS 就能读取。
如果你使用 React、Vue 这类框架,必须做同构渲染。Next.js 的 getServerSideProps 或 Nuxt 的 asyncData 可以在服务端完成数据获取并拼入 HTML。检查方法很简单:在浏览器中右键查看网页源代码,搜索页面中的一段正文,如果找不到,说明渲染路径有问题。
对于完全无法改造的客户端渲染应用,动态渲染是备选方案。通过用户代理检测,对搜索引擎爬虫返回预渲染的静态 HTML 快照。Puppeteer 或 Rendertron 可以完成这个任务,但会增加服务器维护成本,且需要确保快照内容与真实用户看到的一致,否则会被视为 cloaking。
结构化数据也需要同步部署。使用 JSON-LD 格式,至少包含 Organization、WebSite、BreadcrumbList、Article 四种类型。验证工具用 Google 的 Rich Results Test。
URL 设计需要在代码层面做两件事:路径标准化和参数控制。
静态化路径优先,URL 中避免出现 ?、&、= 等查询参数。如果必须使用动态参数,在 Google Search Console 中配置 URL 参数处理规则,明确哪些参数不影响页面内容。
目录层级控制在三级以内。比如 /category/subcategory/product 就是三级。超过三级的内容,搜索引擎会认为重要性降低。
canonical 标签必须在每个页面动态输出,指向该页面的首选版本。对于分页页面,使用 rel="prev" 和 rel="next" 或指向汇总页的 canonical。移动端和桌面端使用相同 URL 时,不需要再设置 rel=alternate 和 rel=canonical 的对应关系。
内部链接的锚文本必须使用描述性文字,禁止使用“点击这里”“了解更多”。导航代码使用 <a> 标签,不要用按钮或 span 加 onclick 跳转,搜索引擎不会执行点击事件。
搜索引擎使用核心网页指标作为排名因素。以下是需要达到的具体数值:
| 指标 | 目标值 | 测量工具 |
|---|---|---|
| LCP | ≤ 2.5 秒 | Lighthouse / PageSpeed Insights |
| FID | ≤ 100 毫秒 | Chrome User Experience Report |
| CLS | ≤ 0.1 | Lighthouse / PageSpeed Insights |
| TTFB | ≤ 800 毫秒 | WebPageTest |
代码层面的优化手段包括:
loading="lazy" 属性,首屏图片不设置该属性。同时提供 width 和 height 属性防止布局偏移。font-display: swap,避免文字在加载期间不可见。预连接字体域名:<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>。defer 或 type="module"。不要使用 async 加载依赖执行顺序的脚本。<link rel="preload">,例如首屏字体和 hero 图片。图片的 SEO 价值在于文件本身和上下文信息。
文件名使用描述性文字,连字符分隔,例如 red-wool-sweater-front.jpg,不要使用 IMG_001.jpg。alt 属性必须填写,描述图片内容,自然融入关键词,但不要堆砌。对于纯装饰性图片,使用空 alt:alt=""。
响应式图片使用 srcset 和 sizes 属性,让浏览器根据屏幕宽度选择合适尺寸。代码示例:
<img src="product-800.jpg"
srcset="product-400.jpg 400w,
product-800.jpg 800w,
product-1200.jpg 1200w"
sizes="(max-width: 600px) 400px,
(max-width: 900px) 800px,
1200px"
alt="红色羊毛毛衣正面照"
width="800"
height="600">
使用 WebP 或 AVIF 格式,同时提供 <picture> 回退:
<picture>
<source srcset="product.avif" type="image/avif">
<source srcset="product.webp" type="image/webp">
<img src="product.jpg" alt="产品图片">
</picture>
视频内容需要提供结构化数据和视频站点地图。不要将重要文本嵌入视频中,搜索引擎无法有效提取视频内的文字信息。
robots.txt 和 meta robots 标签是控制抓取的两层机制。
robots.txt 用于阻止抓取,但不阻止索引。如果某个 URL 被 robots.txt 屏蔽,搜索引擎不会抓取该页面,但如果该 URL 通过外部链接被发现,仍可能出现在搜索结果中(无摘要)。典型配置:
User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /checkout/
Allow: /
Sitemap: https://example.com/sitemap.xml
meta robots 标签用于控制索引和跟踪:
<meta name="robots" content="noindex, follow">:不索引本页,但跟踪页面上的链接。适用于感谢页、内部搜索结果页。<meta name="robots" content="index, nofollow">:索引本页,但不跟踪链接。适用于用户生成内容页面,防止传递权重到不可信链接。x-robots-tag HTTP 头可以在非 HTML 资源(如 PDF)上实现相同的控制效果。
XML 站点地图需要动态生成,包含以下标签:
<url>
<loc>https://example.com/page</loc>
<lastmod>2024-01-15</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
lastmod 必须准确反映页面实际修改时间,不要每次生成都更新为当前时间。搜索引擎会对比 lastmod 值,如果发现不准确,会降低对站点地图的信任度。
对于超过 5 万条 URL 的站点,拆分站点地图并使用站点地图索引文件。新闻站点需要单独的新闻站点地图,包含 publication_date 和 news:title 等标签。
结构化数据使用 JSON-LD 格式插入到 <head> 中。以产品页面为例:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "产品名称",
"description": "产品描述",
"sku": "SKU123",
"offers": {
"@type": "Offer",
"price": "99.00",
"priceCurrency": "CNY",
"availability": "https://schema.org/InStock"
}
}
</script>
验证结构化数据时,除了 Google 的工具,还需要检查 schema.org 的规范是否匹配,避免使用 Google 专用属性导致其他搜索引擎解析失败。
选择技术栈时,按以下优先级评估:
静态站点生成器(如 Astro、Hugo、11ty)在内容可见性和渲染性能上天然占优。Next.js 和 Nuxt 通过服务端渲染也能达到相同效果,但需要额外配置和服务器资源。纯客户端渲染框架(如 Create React App 默认配置)在第一个指标上就不及格,除非配合动态渲染。
对于内容型网站,静态生成是首选。对于需要登录和个性化内容的网站,服务端渲染是底线。对于完全交互式的工具类页面,至少保证营销落地页和文档页面是静态或服务端渲染的。
Google 使用移动版内容进行索引和排名。响应式设计是推荐方案,使用 CSS 媒体查询适配不同屏幕。不要使用 m. 子域名,这会分散链接权重。
移动端需要特别注意:
在代码层面,使用 <meta name="viewport" content="width=device-width, initial-scale=1">,不要设置 minimum-scale 或 maximum-scale 限制用户缩放。
每次上线前,按以下清单逐项检查:
代码结构的选择没有银弹,但以上标准可以排除掉大部分有问题的方案。每次选择时,把内容可见性放在第一位,其他指标在此基础上做优化。
本文由小艾于2026-04-28发表在爱普号,如有疑问,请联系我们。
本文链接:https://www.ipbcms.com/10288.html