上一篇 下一篇 分享链接 返回 返回顶部

Cloudflare SEO 实战指南:从加速、缓存到 Workers 源码优化

发布人:慈云数据-客服中心 发布时间:2小时前 阅读量:4

Cloudflare 如何做 SEO 优化|附源码

在网站 SEO 优化中,很多人第一时间想到的是关键词布局、内容质量、外链建设、站内结构等传统手段。但在实际项目中,网站访问速度、稳定性、安全性、爬虫可访问性、缓存策略、重定向规则、HTTPS 配置,同样会直接影响搜索引擎收录与排名。

Cloudflare 作为全球知名的 CDN、DNS、WAF 和边缘计算平台,不仅可以提升网站访问速度,还可以通过合理配置,帮助网站获得更好的 SEO 表现。

本文将系统讲解:

  • Cloudflare 对 SEO 的影响
  • Cloudflare DNS 如何优化
  • CDN 缓存如何提升页面速度
  • HTTPS 与重定向如何配置
  • Workers 如何实现 SEO 级别优化
  • robots.txt、sitemap.xml、canonical 如何处理
  • 常见 SEO 问题与解决方案
  • 附 Cloudflare Workers 源码示例

一、Cloudflare 为什么会影响 SEO?

搜索引擎排名并不是只看内容。Google、Bing、百度等搜索引擎都会综合考虑网站的访问体验,其中包括:

  • 页面加载速度
  • 服务器响应时间
  • HTTPS 安全性
  • 移动端体验
  • 页面是否稳定可访问
  • 是否存在大量 301 / 302 错误跳转
  • 爬虫是否能正常抓取
  • 是否存在重复页面
  • 是否返回正确 HTTP 状态码
  • 是否有清晰的站点地图

Cloudflare 刚好覆盖了很多技术层面的 SEO 关键点。

例如:

  • 使用 Cloudflare CDN 可以降低全球访问延迟;
  • 使用 Cloudflare Cache 可以减少源站压力;
  • 使用 Cloudflare SSL 可以快速启用 HTTPS;
  • 使用 Page Rules / Redirect Rules 可以配置 301 跳转;
  • 使用 Workers 可以在边缘节点动态修改响应内容;
  • 使用 WAF 可以防止恶意爬虫拖慢网站;
  • 使用 Brotli / HTTP/3 可以提升资源传输效率。

因此,Cloudflare 不只是“套 CDN”,如果使用得当,它可以成为 SEO 技术优化的重要工具。


二、Cloudflare DNS 优化

SEO 的基础是网站必须稳定可访问,而 DNS 解析速度和稳定性会影响用户访问体验。

Cloudflare 的 DNS 解析速度通常很快,并且支持 Anycast 全球网络,可以提升域名解析效率。

1. 使用 Cloudflare 托管 DNS

将域名的 NS 服务器切换到 Cloudflare 后,可以在 Cloudflare 后台管理 DNS 记录。

常见配置如下:

类型 名称 内容 代理状态
A @ 服务器 IP 已代理
CNAME www example.com 已代理
CNAME cdn example.com 已代理或仅 DNS

建议主站域名开启橙色云朵,也就是开启代理。

example.com      A       1.2.3.4      Proxied
www.example.com  CNAME   example.com  Proxied

开启代理后,用户访问网站时会先经过 Cloudflare,再由 Cloudflare 回源请求服务器。

这样可以获得:

  • CDN 加速
  • DDoS 防护
  • WAF 防护
  • HTTPS 支持
  • 缓存能力
  • HTTP/2、HTTP/3 支持

2. 避免 DNS 配置混乱

很多 SEO 问题都来自域名解析不统一,例如:

  • example.com 可以访问
  • www.example.com 也可以访问
  • http://example.com 可以访问
  • https://example.com 可以访问
  • http://www.example.com 也可以访问

如果这些地址都返回 200 状态码,就会形成重复页面,影响权重集中。

推荐做法是统一主域名,例如:

https://www.example.com

然后将其他版本全部 301 到主域名:

http://example.com      -> https://www.example.com
https://example.com     -> https://www.example.com
http://www.example.com  -> https://www.example.com

三、开启 HTTPS 并配置正确 SSL 模式

HTTPS 是现代网站 SEO 的基础配置。搜索引擎普遍更偏好安全站点,浏览器也会对 HTTP 页面显示“不安全”。

Cloudflare 提供多种 SSL 模式:

  • Off
  • Flexible
  • Full
  • Full Strict

推荐使用:

Full (Strict)

为什么不推荐 Flexible?

Flexible 模式下:

用户 -> Cloudflare:HTTPS
Cloudflare -> 源站:HTTP

这种模式虽然用户看到的是 HTTPS,但 Cloudflare 到源站之间仍然是 HTTP,容易产生安全隐患,也可能导致重定向循环。

推荐模式:

用户 -> Cloudflare:HTTPS
Cloudflare -> 源站:HTTPS

也就是 Full 或 Full Strict。

源站证书配置建议

你可以在源站安装:

  • Let's Encrypt 免费证书
  • Cloudflare Origin Certificate
  • 商业 SSL 证书

如果使用 Cloudflare Origin Certificate,只能被 Cloudflare 信任,不能直接用于浏览器访问源站 IP,但在 Cloudflare 代理场景中完全够用。


四、强制 HTTPS 与 301 跳转

SEO 中,301 永久重定向非常重要。它可以告诉搜索引擎:

当前页面已永久迁移到新地址,请将权重传递给新地址。

Cloudflare 后台可以通过 Redirect Rules 实现 HTTP 到 HTTPS 的跳转。

推荐规则

http://example.com/* -> https://www.example.com/$1
https://example.com/* -> https://www.example.com/$1
http://www.example.com/* -> https://www.example.com/$1

注意不要使用 302 临时跳转来做长期域名规范化。对于 SEO 来说,主域名规范化应使用 301。


五、Cloudflare 缓存策略优化 SEO

页面速度是 SEO 的重要指标。Cloudflare 缓存可以显著降低首字节时间,也就是 TTFB。

1. 静态资源缓存

建议对以下资源设置较长缓存:

  • CSS
  • JS
  • 图片
  • 字体
  • 视频
  • PDF
  • SVG

可以在源站返回如下响应头:

Cache-Control: public, max-age=31536000, immutable

表示资源可以缓存一年。

适合带 hash 文件名的资源,例如:

/app.8f3a21.css
/main.92ab11.js
/logo.a8c91.png

2. HTML 页面缓存要谨慎

HTML 是否缓存,要看网站类型。

如果是静态站点,例如:

  • Hugo
  • Hexo
  • Astro
  • Next.js 静态导出
  • VuePress
  • VitePress

可以缓存 HTML。

如果是动态网站,例如:

  • WordPress
  • 电商网站
  • 会员系统
  • 后台管理系统

则需要避免缓存登录页面、购物车、用户中心、订单页等动态内容。

3. 建议缓存规则

静态资源:

URL contains .css .js .png .jpg .webp .svg .woff2
Cache TTL: 1 year
Browser TTL: 1 year

HTML 页面:

Cache TTL: 5 minutes ~ 1 hour
Browser TTL: 0 ~ 5 minutes

API 接口:

Bypass Cache

后台路径:

/admin/*
/login/*
/user/*
/cart/*
/checkout/*
Bypass Cache

六、开启 Brotli、HTTP/2 和 HTTP/3

Cloudflare 后台可以直接开启以下功能:

  • Brotli 压缩
  • HTTP/2
  • HTTP/3
  • 0-RTT Connection Resumption

这些功能可以提升传输效率,尤其对移动端用户体验明显。

Brotli 对 SEO 的价值

Brotli 可以压缩 HTML、CSS、JS 等文本资源,减少文件体积,加快加载速度。

例如一个 300KB 的 JS 文件,开启 Brotli 后可能只有 80KB 左右。

页面加载越快,用户跳出率越低,对 SEO 越有利。


七、使用 Cloudflare Workers 做 SEO 优化

Cloudflare Workers 是运行在 Cloudflare 边缘节点的 JavaScript 代码,可以在请求到达源站前或响应返回用户前进行处理。

它可以实现很多 SEO 功能,例如:

  • 自动添加 canonical 标签
  • 动态生成 robots.txt
  • 动态生成 sitemap.xml
  • 处理 301 重定向
  • 修改响应头
  • 阻止恶意爬虫
  • 给图片增加缓存策略
  • 给 HTML 添加结构化数据

下面提供一些常用源码。


八、源码一:HTTP 自动跳转 HTTPS + 统一 www 域名

以下代码可以部署到 Cloudflare Workers,用于统一域名。

假设主域名为:

https://www.example.com

其他形式全部 301 到该地址。

export default {
  async fetch(request) {
    const url = new URL(request.url)

    const targetHost = 'www.example.com'
    const isHttp = url.protocol === 'http:'
    const isNonWww = url.hostname === 'example.com'

    if (isHttp || isNonWww) {
      url.protocol = 'https:'
      url.hostname = targetHost

      return Response.redirect(url.toString(), 301)
    }

    return fetch(request)
  }
}

部署说明

在 Cloudflare 后台:

Workers & Pages -> Create Worker -> 粘贴代码 -> Deploy

然后绑定路由:

example.com/*
www.example.com/*

九、源码二:自动给页面添加 canonical 标签

canonical 标签用于告诉搜索引擎当前页面的规范地址,避免重复页面造成权重分散。

例如以下 URL 可能内容相同:

https://www.example.com/article?id=1
https://www.example.com/article?id=1&utm_source=google
https://www.example.com/article?id=1&utm_medium=email

我们可以使用 Workers 自动清理部分跟踪参数,并添加 canonical 标签。

class CanonicalRewriter {
  constructor(canonicalUrl) {
    this.canonicalUrl = canonicalUrl
  }

  element(element) {
    element.append(
      ``,
      { html: true }
    )
  }
}

export default {
  async fetch(request) {
    const url = new URL(request.url)

    const removeParams = [
      'utm_source',
      'utm_medium',
      'utm_campaign',
      'utm_term',
      'utm_content',
      'fbclid',
      'gclid'
    ]

    for (const param of removeParams) {
      url.searchParams.delete(param)
    }

    const canonicalUrl = url.origin + url.pathname + url.search

    const response = await fetch(request)
    const contentType = response.headers.get('content-type') || ''

    if (!contentType.includes('text/html')) {
      return response
    }

    return new HTMLRewriter()
      .on('head', new CanonicalRewriter(canonicalUrl))
      .transform(response)
  }
}

注意事项

如果源站已经输出 canonical 标签,不建议重复添加。重复 canonical 可能会让搜索引擎产生混淆。

更稳妥的方式是:

  • 源站统一生成 canonical;
  • Workers 只处理特殊路径;
  • 或者先检测页面是否存在 canonical。

十、源码三:动态生成 robots.txt

robots.txt 用于告诉搜索引擎哪些路径可以抓取,哪些路径不建议抓取。

例如:

User-agent: *
Disallow: /admin/
Disallow: /login/
Disallow: /user/
Allow: /

Sitemap: https://www.example.com/sitemap.xml

使用 Workers 可以直接在边缘节点生成 robots.txt。

export default {
  async fetch(request) {
    const url = new URL(request.url)

    if (url.pathname === '/robots.txt') {
      const robots = `
User-agent: *
Disallow: /admin/
Disallow: /login/
Disallow: /user/
Disallow: /cart/
Disallow: /checkout/
Allow: /

Sitemap: https://www.example.com/sitemap.xml
`.trim()

      return new Response(robots, {
        headers: {
          'content-type': 'text/plain; charset=utf-8',
          'cache-control': 'public, max-age=3600'
        }
      })
    }

    return fetch(request)
  }
}

robots.txt 优化建议

不要屏蔽重要页面,例如:

Disallow: /

这会导致整个网站无法被抓取。

也不要屏蔽 CSS、JS 文件,否则搜索引擎无法正常渲染页面,可能影响移动端体验评估。


十一、源码四:动态生成 sitemap.xml

sitemap.xml 可以帮助搜索引擎发现网站页面,尤其适合文章站、文档站、产品页较多的网站。

以下示例适合小型静态站点。

const pages = [
  {
    loc: 'https://www.example.com/',
    lastmod: '2025-01-01',
    priority: '1.0'
  },
  {
    loc: 'https://www.example.com/about/',
    lastmod: '2025-01-01',
    priority: '0.8'
  },
  {
    loc: 'https://www.example.com/blog/cloudflare-seo/',
    lastmod: '2025-01-10',
    priority: '0.9'
  }
]

function generateSitemap() {
  const urls = pages.map(page => {
    return `
  
    ${page.loc}
    ${page.lastmod}
    weekly
    ${page.priority}
  `
  }).join('')

  return `

${urls}
`
}

export default {
  async fetch(request) {
    const url = new URL(request.url)

    if (url.pathname === '/sitemap.xml') {
      return new Response(generateSitemap(), {
        headers: {
          'content-type': 'application/xml; charset=utf-8',
          'cache-control': 'public, max-age=3600'
        }
      })
    }

    return fetch(request)
  }
}

sitemap.xml 提交建议

生成 sitemap 后,可以提交到:

  • Google Search Console
  • Bing Webmaster Tools
  • 百度搜索资源平台
  • Yandex Webmaster

并在 robots.txt 中声明:

Sitemap: https://www.example.com/sitemap.xml

十二、源码五:为静态资源添加长期缓存头

如果源站没有配置好缓存头,也可以通过 Workers 在边缘层补充。

export default {
  async fetch(request) {
    const url = new URL(request.url)
    const response = await fetch(request)

    const extPattern = /\.(css|js|png|jpg|jpeg|gif|webp|svg|ico|woff|woff2|ttf|eot)$/i

    if (extPattern.test(url.pathname)) {
      const newHeaders = new Headers(response.headers)
      newHeaders.set('cache-control', 'public, max-age=31536000, immutable')

      return new Response(response.body, {
        status: response.status,
        statusText: response.statusText,
        headers: newHeaders
      })
    }

    return response
  }
}

注意

长期缓存适合带版本号或 hash 的资源。

例如:

main.a81f3c.js
style.91ab2.css

如果你的资源文件名不会变化,不建议直接设置一年缓存,否则用户可能长期访问旧文件。


十三、源码六:阻止低质量恶意爬虫

恶意爬虫会消耗服务器资源,拖慢页面响应速度,间接影响 SEO。

可以使用 Workers 简单拦截部分明显异常的 User-Agent。

const blockedAgents = [
  'AhrefsBot',
  'SemrushBot',
  'MJ12bot',
  'DotBot',
  'BLEXBot'
]

export default {
  async fetch(request) {
    const userAgent = request.headers.get('user-agent') || ''

    const blocked = blockedAgents.some(bot =>
      userAgent.toLowerCase().includes(bot.toLowerCase())
    )

    if (blocked) {
      return new Response('Forbidden', {
        status: 403,
        headers: {
          'content-type': 'text/plain; charset=utf-8'
        }
      })
    }

    return fetch(request)
  }
}

注意

不要误伤主流搜索引擎爬虫,例如:

  • Googlebot
  • Bingbot
  • Baiduspider
  • Sogou web spider
  • 360Spider
  • YandexBot

如果误拦搜索引擎,会导致页面无法收录。


十四、Cloudflare Page Rules / Cache Rules 配置建议

虽然 Workers 很灵活,但很多简单优化可以直接用 Cloudflare 后台规则完成。

1. 后台页面绕过缓存

example.com/admin/*
Cache Level: Bypass

2. 登录页面绕过缓存

example.com/login*
Cache Level: Bypass

3. 静态资源缓存

example.com/*.css
example.com/*.js
example.com/*.png
example.com/*.webp

设置:

Edge Cache TTL: 1 month 或 1 year
Browser Cache TTL: 1 month 或 1 year

4. HTML 页面缓存

如果是静态站点,可以设置:

Cache Everything
Edge Cache TTL: 1 hour

如果是 WordPress,需要搭配插件或规则谨慎处理。


十五、WordPress 使用 Cloudflare 的 SEO 优化建议

WordPress 用户非常适合使用 Cloudflare,但要避免缓存登录态页面。

推荐配置

  1. 开启 Cloudflare 代理;
  2. SSL 使用 Full Strict;
  3. 开启 Brotli;
  4. 开启 HTTP/2 和 HTTP/3;
  5. 静态资源长期缓存;
  6. 后台路径绕过缓存;
  7. 使用 SEO 插件生成 sitemap;
  8. 避免缓存预览页、搜索页、购物车页;
  9. 使用 APO 或缓存插件提升 HTML 访问速度。

需要绕过缓存的路径

/wp-admin/*
/wp-login.php
/cart/*
/checkout/*
/my-account/*
/?preview=true

WordPress 常见问题

如果后台登录异常,通常是缓存规则或安全规则影响。

如果出现重定向循环,通常是:

  • Cloudflare SSL 设置为 Flexible;
  • 源站强制 HTTPS;
  • WordPress 地址配置不一致。

建议将 SSL 设置为:

Full Strict

并确保 WordPress 后台地址统一为:

https://www.example.com

十六、Cloudflare SEO 优化检查清单

上线前建议逐项检查:

  • [ ] DNS 解析是否正常
  • [ ] 主域名是否唯一
  • [ ] HTTP 是否 301 到 HTTPS
  • [ ] 非 www 是否 301 到 www,或反向统一
  • [ ] SSL 是否为 Full Strict
  • [ ] 是否开启 Brotli
  • [ ] 是否开启 HTTP/2、HTTP/3
  • [ ] 静态资源是否配置长期缓存
  • [ ] HTML 是否根据业务合理缓存
  • [ ] 后台、登录、购物车是否绕过缓存
  • [ ] robots.txt 是否可访问
  • [ ] sitemap.xml 是否可访问
  • [ ] canonical 是否正确
  • [ ] 是否误拦搜索引擎爬虫
  • [ ] 404 页面是否返回真实 404
  • [ ] 301 跳转链是否过长
  • [ ] 页面是否存在重复 URL
  • [ ] Search Console 是否正常抓取
  • [ ] Core Web Vitals 是否达标

十七、常见错误与解决方案

1. 页面被缓存后用户看到旧内容

原因:

  • HTML 缓存时间太长;
  • 源站更新后没有清理 Cloudflare 缓存;
  • 静态资源没有 hash 文件名。

解决方案:

  • 缩短 HTML Edge Cache TTL;
  • 发布后自动调用 Cloudflare API 清理缓存;
  • 静态资源使用带 hash 的文件名。

2. 搜索引擎抓取到多个重复页面

原因:

  • HTTP 和 HTTPS 同时返回 200;
  • www 和非 www 同时返回 200;
  • URL 参数没有规范化;
  • canonical 缺失。

解决方案:

  • 设置 301 跳转;
  • 添加 canonical;
  • robots.txt 屏蔽无价值参数页面;
  • 在搜索引擎后台配置参数规则。

3. 网站出现重定向循环

原因通常是 Cloudflare SSL 设置错误。

例如:

Cloudflare 使用 Flexible
源站又强制 HTTP 跳转 HTTPS

于是形成循环:

Cloudflare -> 源站 HTTP
源站 -> HTTPS
Cloudflare -> 源站 HTTP
源站 -> HTTPS

解决方案:

Cloudflare SSL 改为 Full Strict
源站正确安装 HTTPS 证书

4. robots.txt 或 sitemap.xml 被缓存错误

如果 robots.txt 或 sitemap.xml 返回错误内容,搜索引擎可能无法正确抓取。

解决方案:

  • 设置较短缓存,例如 1 小时;
  • 修改后手动清理缓存;
  • 使用 Search Console 测试抓取。

十八、进阶:使用 Cloudflare API 自动清理缓存

如果网站发布文章后需要自动刷新缓存,可以调用 Cloudflare API。

以下是 Node.js 示例:

const zoneId = '你的 Zone ID'
const apiToken = '你的 Cloudflare API Token'

async function purgeCache(urls) {
  const response = await fetch(
    `https://api.cloudflare.com/client/v4/zones/${zoneId}/purge_cache`,
    {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${apiToken}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        files: urls
      })
    }
  )

  const data = await response.json()
  console.log(data)
}

purgeCache([
  'https://www.example.com/',
  'https://www.example.com/blog/cloudflare-seo/'
])

如果想清理全部缓存:

body: JSON.stringify({
  purge_everything: true
})

不过不建议频繁清理全部缓存,否则会降低 CDN 命中率。


十九、推荐的整体架构

一个比较理想的 Cloudflare SEO 优化架构如下:

用户 / 搜索引擎爬虫
        |
        v
Cloudflare DNS
        |
        v
Cloudflare CDN + WAF + Cache Rules
        |
        v
Cloudflare Workers
        |
        v
源站服务器 / 静态站点 / WordPress

其中:

  • DNS 负责稳定解析;
  • CDN 负责加速;
  • WAF 负责安全;
  • Cache Rules 负责缓存;
  • Workers 负责边缘 SEO 逻辑;
  • 源站负责内容质量和业务逻辑。

二十、总结

Cloudflare 对 SEO 的帮助并不是简单地“让网站变快”,而是从多个层面提升网站的技术质量:

  • 提升 DNS 解析速度;
  • 降低 TTFB;
  • 加速静态资源;
  • 提供 HTTPS;
  • 统一域名权重;
  • 减少重复页面;
  • 提升站点稳定性;
  • 降低恶意流量影响;
  • 辅助生成 robots.txt 和 sitemap.xml;
  • 通过 Workers 灵活处理 SEO 细节。

但需要注意,Cloudflare 不是万能 SEO 工具。它解决的是技术层面的访问体验、缓存、安全和规范化问题。真正的 SEO 仍然离不开高质量内容、合理的网站结构、优秀的用户体验和持续运营。

如果你的网站已经接入 Cloudflare,建议优先做好以下五件事:

  1. SSL 设置为 Full Strict;
  2. HTTP、HTTPS、www、非 www 做 301 统一;
  3. 静态资源开启长期缓存;
  4. robots.txt、sitemap.xml、canonical 保持正确;
  5. 不要误拦搜索引擎爬虫。

做好这些基础配置后,再结合 Workers 做精细化优化,Cloudflare 就能成为你网站 SEO 的强力基础设施。

目录结构
全文