wordpress 与 Cloudflare 缓存的配合

Super Page Cache

之前一直用的 WP Super Cache 这个缓存插件,这个插件主要用于本地生成静态页缓存,并不与 Cloudflare 配合,当然你可以在 Cloudflare 上再加上一层缓存。但是关键是在更新文章和首页时要让缓存失效,这需要 Cloudflare 的 API token,这个插件并不支持。

Super Page Cache 这个插件是支持 Cloudflare API token 的,在更新帖子后可以直接让缓存失效,接着通过 Cloudflare 解析的站点再次请求时,会再走一次 Cloudflare 代理然后生成缓存。不过启用这个插件时,不要启用磁盘页面缓存选项,他会把用户登录信息缓存页面也缓存,这是不可以的。

页面缓存

Cloudflare 免费用户只支持三个页面缓存规则,wordpress 站点够用。这三个规则是:

  • example.com/*preview=true 绕过
  • example.com/wp-admin/* 绕过
  • example.com/* 缓存级别: 缓存所有内容, 边缘缓存 TTL: 1个月

Cache Rules

登录 cookie 不使用缓存。

(starts_with(http.request.full_uri, "https://example.com/") and (http.cookie contains "wordpress_sec_" or http.cookie contains "wordpress_logged_in" or http.cookie contains "comment_"))

WP Super Cache 还可以启用

WP Super Cache 主要是生成静态页,不让他走 php 走数据库请求,登录用户页面不走缓存。这样即使 cloudflare 没有命中缓存,还是会来请求这个静态页。

Cloudflare 的 Cache Rules 和 Page Rules 有一些关键区别:

  • Cache Rules:专注于缓存管理,允许你更精细地控制缓存行为。你可以根据请求的 URL、HTTP 请求头、文件类型等多个条件来设置缓存规则1。这样,你可以为不同的资源类型或条件创建不同的缓存策略。

  • Page Rules:更广泛的功能,不仅可以管理缓存,还可以处理重定向、修改头信息、应用安全控制等。Page Rules 主要通过 URL 路径来定义规则,但缓存相关的功能现在已经转移到 Cache Rules 中1。

简单来说,Cache Rules 更专注于缓存管理,而 Page Rules 提供了更广泛的功能,包括缓存管理在内。

https://blog.cloudflare.com/introducing-cache-rules/

https://blog.cloudflare.com/cdn-cache-control/

缓存响应头

服务器通过 HTTP 头信息来判断客户端缓存的资源是否与服务器上的资源一致。以下是几种常见的机制:

  1. Last-Modified 和 If-Modified-Since

    • Last-Modified:服务器在响应头中包含 Last-Modified 字段,表示资源最后一次修改的时间。
    • If-Modified-Since:客户端在后续请求中包含 If-Modified-Since 字段,值为上次请求时 Last-Modified 的值。服务器会比较这个时间与资源的实际修改时间,如果资源没有更新,则返回 304 Not Modified
  2. ETag 和 If-None-Match

    • ETag:服务器在响应头中包含 ETag 字段,这是资源的唯一标识符,通常是资源内容的哈希值。
    • If-None-Match:客户端在后续请求中包含 If-None-Match 字段,值为上次请求时 ETag 的值。服务器会比较这个标识符与资源的当前标识符,如果一致,则返回 304 Not Modified

这两种机制都是为了让服务器能够高效地判断资源是否发生变化,从而决定是否需要返回完整的资源内容。通过这些头信息,服务器可以有效地管理缓存,减少不必要的数据传输,提高网页加载速度。

解释响应头

age: 96
alt-svc: h3=":443"; ma=86400
cache-control: s-maxage=31536000, max-age=60
cf-cache-status: HIT
cf-ray: 90f196a5dcba14fc-LAX
date: Sun, 09 Feb 2025 05:51:35 GMT
last-modified: Sun, 09 Feb 2025 05:49:58 GMT
link: <https://dev798.com/wp-json/>; rel="https://api.w.org/"
link: <https://dev798.com/wp-json/wp/v2/posts/24>; rel="alternate"; title="JSON"; type="application/json"
link: <https://dev798.com/?p=24>; rel=shortlink
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
priority: u=0,i
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=8aurImmV3leRgXHEXM6YityZ0NrFbb6b7%2FvOYTAwPsfuhfc%2FpJ4imqRncI0awKldXnkLdb9WPv6eLaM3B1C7To944zhVO%2FwpbEYe%2BQ0iBv1e7p%2FqG%2FX50E7WyOZn"}],"group":"cf-nel","max_age":604800}
server: cloudflare
server-timing: cfCacheStatus;desc="HIT"
server-timing: cfL4;desc="?proto=QUIC&rtt=383111&min_rtt=360781&rtt_var=126917&sent=10&recv=5&lost=0&retrans=1&sent_bytes=1454&recv_bytes=2112&delivery_rate=99&cwnd=12000&unsent_bytes=0&cid=1f3f43a2545c87ba&ts=1827&x=1"
server-timing: cfExtPri
server-timing: cfHdrFlush;dur=0
strict-transport-security: max-age=0
vary: Accept-Encoding, Cookie
x-pingback: https://dev798.com/xmlrpc.php
x-powered-by: PHP/8.4.1
x-wp-cf-super-cache-active: 1
x-wp-cf-super-cache-cache-control: s-maxage=31536000, max-age=60
x-wp-cf-super-cache-cookies-bypass: swfpc-feature-not-enabled
x-wp-spc-disk-cache: DISABLED

这个 HTTP 响应头包含了许多字段,每个字段都提供了关于请求和响应处理的信息。以下是对每个字段的解释:

  1. age: 96

    • 表示响应在缓存中存储的时间(以秒为单位)。这意味着响应已经在缓存中存在了 96 秒。
  2. alt-svc: h3=":443"; ma=86400

    • 指定了服务器支持的替代服务。在这里,h3 表示 HTTP/3,ma=86400 表示这个信息的有效期为 86400 秒(即 24 小时)。
  3. cache-control: s-maxage=31536000, max-age=60

    • s-maxage=31536000:告诉共享缓存(如 CDN)可以缓存资源的最长时间为 31,536,000 秒(即 365 天)。
    • max-age=60:告诉客户端(如浏览器)可以缓存资源的最长时间为 60 秒。
  4. cf-cache-status: HIT

    • 表示请求命中了 Cloudflare 的缓存,即资源是从缓存中提供的,而不是从源服务器重新获取的。
  5. cf-ray: 90f196a5dcba14fc-LAX

    • 这是 Cloudflare 用于跟踪和调试的唯一请求标识符。
  6. date: Sun, 09 Feb 2025 05:51:35 GMT

    • 表示响应生成的日期和时间。
  7. last-modified: Sun, 09 Feb 2025 05:49:58 GMT

    • 表示资源最后一次修改的日期和时间。
  8. link

    • 提供了与当前资源相关的链接,例如 JSON API 和短链接。
  9. nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}

    • 用于配置网络错误日志(Network Error Logging),指定了报告端点和最大有效时间。
  10. priority: u=0,i

    • 用于指定资源的优先级,但具体实现可能因浏览器而异。
  11. report-to

    • 指定了报告端点和最大有效时间,用于网络错误日志。
  12. server: cloudflare

    • 表示响应是由 Cloudflare 服务器处理的。
  13. server-timing

    • 提供了关于请求处理时间的详细信息,例如缓存状态、传输协议、往返时间等。
  14. strict-transport-security: max-age=0

    • 表示 HTTP Strict Transport Security (HSTS) 策略,但 max-age=0 表示该策略不强制执行。
  15. vary: Accept-Encoding, Cookie

    • 指定了决定是否可以使用缓存响应的请求头。如果这些头发生变化,缓存可能不会命中。
  16. x-pingback: https://dev798.com/xmlrpc.php

    • 指定了用于 Pingback 的 URL。Pingback 是一种链接通知系统。
  17. x-powered-by: PHP/8.4.1

    • 表示服务器使用的是 PHP 8.4.1 版本。
  18. x-wp-cf-super-cache-active: 1

    • 表示 WP Super Cache 插件是活动的,用于 WordPress 的缓存。
  19. x-wp-cf-super-cache-cache-control: s-maxage=31536000, max-age=60

    • 与 cache-control 类似,指定了缓存策略。
  20. x-wp-cf-super-cache-cookies-bypass: swfpc-feature-not-enabled

    • 表示某些缓存功能未启用。
  21. x-wp-spc-disk-cache: DISABLED

    • 表示磁盘缓存被禁用。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇