IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    WordPress 使用 Caddy 完成静态化缓存

    白宦成发表于 2025-01-05 03:05:54
    love 0

    在 使用 Caddy 处理 WordPress 当中,我提到在用 Caddy 处理 WordPress,且为了性能做了很多优化。

    我的博客经历了三重优化:最基础的 PHP OpCache + Redis 数据查询缓存 + 静态化缓存。

    其中一个比较有效的,便是在整个站点上加入静态化缓存,绝大多数游客看到的其实是预先生成好的静态页面,从而减少了数据库加载、渲染、计算的成本。

    而想要实现静态化,则需要借助于 Cache Enabler 插件和 Caddy 配置来完成。

    安装插件并启用

    安装 Cache Enabler 插件,并启用插件,启用后,在后台设置中,配置过期时间和对应的清除策略,并保存。这个时候,Cache Enabler 就会自动帮你去生成不同的页面了。

    image 5

    配置 Caddy 路由转发

    首先,你应该在你的 php_fastcgi unix//run/php/php-fpm.sock 前面加入缓存的代码并重启 Caddy,具体如下

    image 4

    缓存配置如下

         @cache {
    		not header_regexp Cookie "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in"
    		not path_regexp "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(index)?.xml|[a-z0-9-]+-sitemap([0-9]+)?.xml)"
    		not method POST
    		not expression {query} != ''
        }
    
        route @cache {
            try_files /wp-content/cache/cache-enabler/{host}{uri}/https-index.html /wp-content/cache/cache-enabler/{host}{uri}/index.html {path} {path}/index.php?{query}
        }
           
    

    这部分配置先定义了一个 @cache 块,用于后续判断,并在其中加入了多种条件判断,说明了不使用缓存的情况:

    • 如果用户有以下 Cookie,就不使用缓存:
      • comment_author(评论作者)
      • wordpress_[a-f0-9]+ (WordPress 的会话 Cookie)
      • wp-postpass(密码保护文章的 Cookie)
      • wordpress_logged_in(登录状态的 Cookie)
    • 如果当前请求命中了以下路径则不缓存
      • /wp-admin/(后台管理页面)
      • /xmlrpc.php(XML-RPC 接口)
      • 所有 wp-*.php 文件(WordPress 系统文件)
      • /feed/(RSS 订阅)
      • sitemap 相关文件
    • POST 请求不缓存(比如评论)
    • 带查询参数的缓存不请求。

    随后,通过 route @cache 定义了命中缓存部分的查找顺序:

    1. 先找 HTTPS 版本的缓存:/wp-content/cache/cache-enabler/{host}{uri}/https-index.html
    2. 再找普通缓存:/wp-content/cache/cache-enabler/{host}{uri}/index.html
    3. 如果找不到缓存,就尝试原始路径:{path}
    4. 最后尝试 PHP 文件:{path}/index.php?{query}

    查看效果

    打开一个无痕窗口,访问你的网站,如果在 html 底部看到 <!-- Cache Enabler by KeyCDN @ Sat, 04 Jan 2025 03:05:34 GMT (https-index.html) --> ,则说明你已经成功启用静态化缓存了!

    参考资料

    • 如果你使用 WP Supercache 、 WP Rocket、WP Fastest cache、W3 Total Cache,则可以参考 https://caddy.community/t/example-configure-wordpress-with-a-static-cache/8215 进行相关配置。


沪ICP备19023445号-2号
友情链接