Decentralization? We're still early!
返回課程

主权个人的WordPress入门课

0%完成
0/0 Steps
  1. 第一部分 WordPress基础知识入门

    WordPress:内容创作者的知识输出及展示利器
  2. WordPress的开源生态:开源软件运动、GPL协议与AI赋能
  3. WordPress的软件版本、路线图与社区文化
  4. 值得关注的WordPress信息源与常用工具
  5. 五分钟安装指南、主题插件与备份还原方法
  6. 第二部分 WordPress与本地知识管理
    如何在本地电脑/服务器快速部署WordPress站点
  7. 最强CMS:WordPress的文件结构、前端与后端
  8. 学习使用Gutenberg编辑器进行内容创作和排版
  9. 学习使用全站编辑主题(FSE)进行站点设计
  10. 自定义文章类型:WordPress的基础功能及其拓展
  11. 第三部分 如何在云端部署WordPress
    云端部署WordPress的方法:选购虚拟主机或VPS
  12. 如何实现WordPress站点的自动化部署
  13. 如何优化Linux服务器设置实现安全加固
  14. 如何压缩WordPress站点图片并设置CDN
  15. 第四部分 WordPress的维护优化与安全加固
    WordPress数据管理:学习导入导出数据、清理冗余数据
  16. 动态数据调取优化:为WordPress站点添加配置Redis缓存
  17. 页面速度优化:为WordPress站点添加配置fastcgi缓存
  18. 优化WordPress的安全设置,实现站点的安全加固
  19. 第五部分 WordPress主题及插件进阶研究
    WordPress主题的选择与站点设计基础知识
  20. 善用WordPress插件:优秀插件推荐及其使用
  21. 学习使用Kadence Blocks优化页面设计
  22. 学习使用Jetengine为WordPress创建管理动态内容
  23. 学习使用LearnDash创建 WordPress 学习管理系统
  24. 学习使用Woocommerce创建网上商店
  25. 第六部分 内容创作者的WordPress:迈向Web3
    如何通过WordPress打造个人品牌:一个简易指南
  26. AI时代的内容创作:文章配图与音视频版本生成
  27. 如何使用JPG Store铸造基于Cardano链的NFT
  28. 为WordPress添加比特币收款和比特币支付网关
  29. 为WordPress添加Cardano支付网关和Cardano钱包登录
  30. 为WordPress添加以太坊支付网关和以太坊钱包登录
  31. WordPress用户管理与会员管理、内容门控
  32. 第七部分 WordPress汉化与设计优化
    WordPress主题、插件的汉化:Poedit 使用教程
  33. 为WordPress站点添加自定义字体、繁简体转换、多语言
  34. 如何通过调整CSS美化WordPress站点细节
  35. 如何开发自定义插件完善WordPress功能
  36. WordPress的功能扩展:FSE与Interactivity API
  37. 第八部分 AI时代的WordPress实践
    AI赋能WordPress开发:技术实践与未来展望
  38. Trilium RSS Digest 插件使用教程
  39. Cardano NFT Minter 插件使用教程
  40. Trilium AI Design 插件使用教程
課 17 的 40
In Progress

页面速度优化:为WordPress站点添加配置fastcgi缓存

Brave 2024-02-01

一、如何测试页面速度

1.1 为什么页面速度如此重要?

页面加载速度直接影响三个核心指标:用户体验、转化率和搜索引擎排名。根据 Google 2025 年发布的最新研究数据,页面加载时间每增加 1 秒,跳出率平均增加 32%,转化率下降约 7%。更重要的是,Google 的核心 Web 指标(Core Web Vitals)已成为搜索排名的重要因素,这使得性能优化不再是可选项,而是必须完成的工作。

1.2 Google PageSpeed Insights 详解

PageSpeed Insights 是一个由 Google 提供的免费网页性能分析工具,用于评估和优化网站的加载速度和性能。通过该工具,你可以获取关于你的网站在移动设备和桌面设备上的性能表现的详细报告和分数。

🔗 访问地址https://pagespeed.web.dev/

📋 核心功能一览

功能说明
🎯 网页性能评估对网页进行全面的性能评估,包括加载时间、交互性和视觉稳定性等方面。分别为移动设备和桌面设备提供独立的性能分数和建议
📈 性能分数体系每个设备类型给出 0-100 分的评分,高分表示网页加载速度快且性能良好
💡 优化建议根据分析结果提供具体的优化建议,涉及优化图像、压缩资源、减少重定向和渲染阻塞、启用缓存等方面
📱 设备特定分析分别对移动设备和桌面设备进行分析,便于针对不同设备类型进行优化
📊 实时数据与历史记录提供实时数据和历史记录,便于跟踪和比较不同时间段的性能变化

🎯 目标分数参考

设备类型目标分数说明
📱 移动设备60 分以上移动端优化难度较高,60分即为良好表现
🖥️ 桌面设备90 分以上桌面端应追求更高的性能表现

🔍 2025-2026 年核心 Web 指标(Core Web Vitals)更新

Google 持续优化其性能评估标准,以下是最新的核心指标:

指标全称良好阈值含义
LCPLargest Contentful Paint≤ 2.5 秒最大内容渲染时间,衡量加载性能
INPInteraction to Next Paint≤ 200 毫秒(2024年3月起取代FID)交互到下一次绘制,衡量页面响应速度
CLSCumulative Layout Shift≤ 0.1累积布局偏移,衡量视觉稳定性

⚠️ 重要变更提示:INP(Interaction to Next Paint)已于 2024 年 3 月正式取代 FID(First Input Delay),成为衡量交互性的核心指标。INP 考量用户与页面的整体交互体验,而非仅仅第一次交互,这对 WordPress 站点的 JavaScript 优化提出了更高要求。

使用 PageSpeed Insights 的好处之一是,如果你的分数较低,它会提供有关如何改善分数的建议。它会识别出潜在的性能问题,并给出相应的优化建议,以便你采取相应的措施来提高网页速度和性能。

通过定期使用 PageSpeed Insights 来监控和测试你的网站,你可以不断优化和改进网页性能,以提供更好的用户体验。

1.3 其他推荐测速工具

除了 PageSpeed Insights,还有以下工具可以从不同角度评估网站性能:

工具地址特点
🔧 Pingdomhttps://tools.pingdom.com/提供全球多节点测试,报告直观易懂
🆕 GTmetrixhttps://gtmetrix.com/结合 Lighthouse 和 Core Web Vitals,提供瀑布图分析
🆕 WebPageTesthttps://www.webpagetest.org/高级用户首选,支持多种网络条件模拟和视频录制
🆕 Chrome DevTools浏览器内置开发者必备,Lighthouse 面板可进行本地测试,Performance 面板可录制详细的性能时间线

💡 专业建议:建议同时使用 2-3 种工具进行交叉验证,因为不同工具的测试环境和算法存在差异。PageSpeed Insights 使用真实用户数据(Field Data)与实验室数据(Lab Data)结合,而 GTmetrix 主要依赖实验室模拟测试,两者各有优势。


二、FastCGI 缓存与页面速度优化

2.1 WordPress 性能瓶颈分析

WordPress 是一个非常流行的内容管理系统,它可以让我们轻松地创建和管理网站。然而,WordPress 也有一些缺点,其中之一就是性能问题。WordPress 是一个典型的 PHP-MySQL 应用,每次访问都需要与数据库进行交互,执行 PHP 代码,生成 HTML 页面,这些过程都会消耗服务器的资源,导致响应时间变慢,用户体验下降。

🔄 传统 WordPress 请求流程:

用户请求 → Nginx/Apache → PHP-FPM → WordPress核心 → 数据库查询 → 主题渲染 → 插件执行 → 生成HTML → 返回用户

每一次页面访问都需要经历这个完整的流程,即使页面内容没有任何变化。对于一个安装了20个插件、使用复杂主题的WordPress站点,生成一个页面可能需要执行数百次数据库查询和大量PHP运算,这正是性能瓶颈所在。

为了解决这个问题,我们可以使用一种叫做 FastCGI 缓存的技术,来提高 WordPress 站点的速度和稳定性。

2.2 FastCGI 缓存原理详解

FastCGI 缓存是一种基于 Nginx 的缓存技术,它可以将后端 CGI 服务(如 PHP-FPM)返回的页面缓存起来,存储在内存或硬盘中,当后续请求到来时,直接从缓存中返回页面,而不需要再次与后端服务通信,从而节省了传输时间和后端资源。FastCGI 缓存与 Squid、Varnish、CDN 等原理类似,由于减少了后端请求,原则上性能会比 WordPress 的各种缓存插件高出许多。

⚡ 启用 FastCGI 缓存后的请求流程:

用户请求 → Nginx(缓存命中)→ 直接返回HTML → 用户
         ↓(缓存未命中)
         → PHP-FPM → WordPress → 生成HTML → 存入缓存 → 返回用户

📊 实测性能对比(典型WordPress站点):

指标无缓存启用FastCGI缓存提升幅度
TTFB(首字节时间)800-1500ms10-50ms约95%
并发承载能力50-100请求/秒5000+请求/秒约50-100倍
服务器CPU负载极低显著降低

2.3 FastCGI 缓存的优点

提高了网站的响应速度:减少了页面加载时间,提升了用户体验和 SEO 排名

降低了服务器的负载:减少了数据库的压力,提高了网站的稳定性和安全性

灵活的缓存规则:可以根据不同的条件,如请求方法、查询字符串、Cookie 等,来决定是否缓存和如何缓存

简单的缓存管理:可以通过 Nginx 的模块 ngx_cache_purge 和 WordPress 的插件 Nginx Helper 来清除指定的缓存

✅ 🆕 资源效率极高:与 Redis Object Cache 等对象缓存不同,FastCGI 缓存在 Nginx 层面完成,不需要额外的内存数据库服务,部署和维护成本更低

2.4 🆕 FastCGI 缓存 vs 其他缓存方案对比

理解不同缓存方案的差异有助于做出正确的技术选型:

缓存方案缓存层级优点缺点适用场景
FastCGI CacheNginx(服务器层)速度最快、资源占用低配置较复杂、需要服务器权限VPS/独立服务器用户
Redis Object Cache对象缓存层减少数据库查询、支持动态内容需要Redis服务、占用内存高动态交互站点
WP Super CacheWordPress插件层安装简单、无需服务器配置性能不如服务器层缓存共享主机用户
W3 Total CacheWordPress插件层功能全面、可配合CDN配置复杂、可能冲突需要精细控制的用户
Cloudflare APOCDN边缘层全球加速、配置简单付费功能、依赖第三方全球访问站点

💡 最佳实践:对于追求极致性能的站点,可以采用"FastCGI 缓存 + Redis Object Cache + CDN"的组合方案,实现多层缓存架构。


三、手动为 WordPress 站点启用 FastCGI 缓存

要为 WordPress 站点启用 FastCGI 缓存,我们需要以下几个步骤:

📋 操作步骤概览

步骤任务说明
1️⃣安装 Nginx 和 PHP-FPM配置好 WordPress 站点的虚拟主机
2️⃣安装 ngx_cache_purge 模块这个模块可以让我们清除指定的缓存
3️⃣配置 FastCGI 缓存参数包括缓存路径、缓存键、缓存有效期等
4️⃣配置缓存规则判断是否缓存、如何跳过缓存、如何返回缓存等
5️⃣安装 Nginx Helper 插件在 WordPress 后台管理缓存

3.1 安装 Nginx 和 PHP-FPM

我们假设你已经有了一个运行 Linux 的服务器,并且已经安装了 WordPress。如果你还没有安装 WordPress,你可以参考 DigitalOcean 的 LAMP 安装教程 来进行安装。

⚠️ 版本建议(2025-2026年):

强烈建议使用以下软件版本以获得最佳性能和安全性:

  • 操作系统:Ubuntu 22.04 LTS 或 Ubuntu 24.04 LTS
  • PHP:PHP 8.2 或 PHP 8.3(WordPress 6.4+ 已完全支持)
  • Nginx:1.24+ 或 1.26+

要安装 Nginx 和 PHP-FPM,你可以使用以下命令:

sudo apt update
sudo apt install nginx php-fpm

🆕 针对 Ubuntu 22.04/24.04 安装 PHP 8.3 的命令:

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.3-fpm php8.3-mysql php8.3-xml php8.3-mbstring php8.3-curl php8.3-zip php8.3-gd php8.3-imagick php8.3-intl

安装完成后,你需要配置 Nginx 的虚拟主机,来指向你的 WordPress 站点的目录。你可以参考 DigitalOcean 的 LEMP 配置教程 来进行配置。

⚙️ 配置要点

在配置 Nginx 虚拟主机时,你需要注意以下几点:

配置项说明示例
server_name设置为你的域名example.com
try_files将请求转发给 WordPress 的 index.php$uri $uri/ /index.php?$args;
fastcgi_pass将 PHP 请求传递给 PHP-FPMunix:/var/run/php/php8.3-fpm.sock;
fastcgi_param设置 PHP 文件路径SCRIPT_FILENAME $document_root$fastcgi_script_name;

🆕 完整的 Nginx 虚拟主机配置示例(含 FastCGI 缓存):

# 定义缓存路径和参数
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m inactive=60m use_temp_path=off;

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html;

    # 缓存状态头(便于调试)
    add_header X-Cache-Status $upstream_cache_status;

    # 静态资源缓存
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        
        # FastCGI 缓存配置
        fastcgi_cache WORDPRESS;
        fastcgi_cache_valid 200 60m;
        fastcgi_cache_valid 404 1m;
        fastcgi_cache_use_stale error timeout updating http_500 http_503;
        fastcgi_cache_lock on;
        
        # 缓存键
        fastcgi_cache_key "$scheme$request_method$host$request_uri";
        
        # 跳过缓存的条件
        set $skip_cache 0;
        
        # 登录用户不缓存
        if ($http_cookie ~* "wordpress_logged_in") {
            set $skip_cache 1;
        }
        
        # POST请求不缓存
        if ($request_method = POST) {
            set $skip_cache 1;
        }
        
        # 查询字符串不缓存
        if ($query_string != "") {
            set $skip_cache 1;
        }
        
        # WooCommerce购物车不缓存
        if ($http_cookie ~* "woocommerce_items_in_cart") {
            set $skip_cache 1;
        }
        
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;
    }
}

配置完成后,你需要重启 Nginx 和 PHP-FPM,以使配置生效:

sudo systemctl restart nginx
sudo systemctl restart php8.3-fpm

你可以访问你的域名,来检查你的 WordPress 站点是否正常运行。如果你看到了 WordPress 的首页,说明你已经成功配置了 Nginx 和 PHP-FPM。如果遇到问题,可以参考 DigitalOcean 的故障排查教程 来进行排查和解决。

3.2 🆕 验证缓存是否生效

配置完成后,使用以下方法验证 FastCGI 缓存是否正常工作:

# 方法一:使用 curl 检查响应头
curl -I https://example.com

# 查看 X-Cache-Status 头的值:
# MISS - 缓存未命中,首次请求
# HIT - 缓存命中,从缓存返回
# BYPASS - 缓存被绕过(如登录用户)
# EXPIRED - 缓存已过期

# 方法二:检查缓存目录是否生成文件
ls -la /var/cache/nginx/

# 方法三:监控缓存命中率
tail -f /var/log/nginx/access.log | grep -E "(HIT|MISS|BYPASS)"

四、为 YunoHost 站点启用 FastCGI

要为使用 YunoHost 搭建的 WordPress 站点启用 FastCGI,请按照以下步骤操作:

📋 操作步骤

步骤 1:登录服务器

登录到你的 YunoHost 服务器,打开终端或 SSH 会话。

步骤 2:编辑 Nginx 配置文件

使用 root 权限或具有 sudo 权限的用户执行以下命令:

sudo nano /etc/nginx/conf.d/<your_domain>.d/<your_domain>.conf

📝 将 <your_domain> 替换为你 WordPress 站点的域名。

步骤 3:找到 server 块

在配置文件中找到与你的 WordPress 站点对应的 server 块。该 server 块应该是以 server { 开头的一个块。

步骤 4:添加 FastCGI 配置

在该位置块中添加以下行来启用 FastCGI:

fastcgi_pass unix:/var/run/php/php<version>-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;

📝 将 <version> 替换为你正在使用的 PHP 版本号。你可以通过运行 ls /var/run/php/ 命令查看可用的 PHP 版本。

步骤 5:验证并重载配置

# 验证 Nginx 配置是否正确
sudo nginx -t

# 如果没有错误消息,重新加载 Nginx
sudo systemctl reload nginx

⚠️ 注意:此过程可能因你的 YunoHost 配置和特定站点而有所不同。确保根据实际情况进行调整,并在修改配置文件之前创建备份以防万一。


五、使用 WordOps 快速安装 FastCGI 缓存

5.1 WordOps 简介

WordOps 是一个开源的命令行工具,专门用于在 Linux 服务器上快速部署和管理高性能 WordPress 站点。它是 EasyEngine 的分支,提供了开箱即用的 Nginx、PHP-FPM、MariaDB/MySQL、Redis 等组件的优化配置,特别适合不熟悉服务器配置的用户快速搭建高性能 WordPress 环境。

📦 WordOps 主要特性:

特性说明
一键部署单条命令创建完整的 WordPress 站点
性能优化预配置 FastCGI 缓存、Redis 缓存、Brotli 压缩
SSL 证书自动申请和续期 Let's Encrypt 证书
多站点管理轻松管理同一服务器上的多个站点
监控仪表板内置 Netdata 实时监控

5.2 使用 WordOps 创建带 FastCGI 缓存的站点

创建 WordPress 站点时直接启用 Nginx fastcgi_cache:

wo site create example.com --wpfc

🆕 更多创建选项:

# 创建带 SSL 的 WordPress 站点(推荐)
wo site create example.com --wpfc --letsencrypt

# 创建带 Redis 对象缓存的站点
wo site create example.com --wpfc --wpredis --letsencrypt

# 创建 WordPress 多站点
wo site create example.com --wpfc --wpsubdir --letsencrypt

5.3 为现有站点启用 FastCGI 缓存

对于已安装的站点,通过更新命令开启 FastCGI 缓存功能:

sudo wo site update example.com --wpfc

5.4 缓存管理命令

清理缓存

# 清理所有 FastCGI 缓存
wo clean --fastcgi

# 清理特定站点的缓存
wo clean --fastcgi example.com

🆕 更多清理命令:

# 清理所有缓存(包括 Redis、OPcache 等)
wo clean --all

# 仅清理 OPcache
wo clean --opcache

# 仅清理 Redis 缓存
wo clean --redis

禁用 FastCGI 缓存

如果需要禁用 FastCGI 缓存(例如使用 Cloudflare APO 时),可以使用以下命令:

# 禁用 FastCGI 缓存,切换回普通 WordPress 配置
wo site update example.com --wp

🔗 参考资料:

5.5 🆕 使用 Nginx Helper 插件管理缓存

在 WordPress 后台安装 Nginx Helper 插件后,可以实现:

  1. 自动清除缓存:当文章发布、更新或删除时自动清除相关缓存
  2. 手动清除缓存:在后台一键清除全站缓存
  3. 缓存状态显示:在工具栏显示当前的缓存状态

插件配置步骤:

  1. 在 WordPress 后台安装并激活 "Nginx Helper" 插件
  2. 进入 设置 → Nginx Helper
  3. 启用 "Enable Purge"
  4. 选择 "nginx Fastcgi cache" 作为缓存方式
  5. 根据需要配置自动清除规则

六、通过文件压缩优化性能

除了缓存优化外,文件压缩是另一个关键的性能优化手段。通过减少传输到用户浏览器的数据量,可以显著提升页面加载速度,特别是对于移动网络用户。

6.1 压缩技术对比

压缩算法压缩率压缩速度浏览器支持推荐度
Gzip中等全部浏览器⭐⭐⭐⭐
Brotli高(比Gzip高15-25%)较慢现代浏览器(95%+)⭐⭐⭐⭐⭐
Zstd最高部分浏览器(新兴)⭐⭐⭐

6.2 在 Nginx 中启用 Gzip 压缩

# 在 nginx.conf 或站点配置中添加
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;
gzip_min_length 1000;

6.3 在 Nginx 中启用 Brotli 压缩(推荐)

Brotli 是 Google 开发的新一代压缩算法,压缩率比 Gzip 高 15-25%,特别适合文本类资源。

# Ubuntu 安装 Brotli 模块
sudo apt install libnginx-mod-http-brotli-static libnginx-mod-http-brotli-filter
# Nginx 配置
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml font/woff2;
brotli_static on;  # 启用预压缩文件支持

💡 最佳实践:同时启用 Brotli 和 Gzip,Nginx 会根据浏览器支持情况自动选择最佳压缩算法。

6.4 图片优化

图片通常占网页总大小的 50% 以上,优化图片是提升性能的重要手段:

优化方法说明推荐工具/插件
格式转换使用 WebP/AVIF 替代 JPEG/PNGShortPixel, Imagify, EWWW
懒加载延迟加载视窗外的图片WordPress 5.5+ 原生支持
响应式图片根据设备提供合适尺寸的图片srcset 属性
CDN 分发通过全球 CDN 加速图片加载Cloudflare, BunnyCDN

🆕 WebP/AVIF 格式性能对比:

格式相对 JPEG 体积浏览器支持推荐场景
WebP25-35% 更小98%+通用推荐
AVIF50% 更小90%+追求极致压缩

6.5 CSS/JavaScript 优化

优化方法说明推荐工具/插件
代码压缩移除空白、注释,缩短变量名Autoptimize, WP Rocket
合并文件减少 HTTP 请求数Autoptimize(注意 HTTP/2 下可能不需要)
延迟加载非关键 JS 延迟执行WP Rocket, Flying Scripts
移除未使用代码删除未使用的 CSS/JSPurgeCSS, Asset CleanUp

6.6 使用 WordOps 一键启用压缩

WordOps 已预配置 Brotli 和 Gzip 压缩,无需额外配置:

# 查看站点配置信息
wo site info example.com

# 输出会显示压缩状态

七、性能优化检查清单

完成课程后,请使用以下检查清单确保你的 WordPress 站点已完成全面优化:

✅ 服务器层优化

✅ 应用层优化

✅ 前端优化

✅ 监控与维护


🎯 课程总结

本课程聚焦于 WordPress 性能优化的两大核心方向:

📁 文件压缩优化

  • Gzip/Brotli 文本压缩可减少 60-80% 的传输数据量
  • WebP/AVIF 图片格式可减少 25-50% 的图片体积
  • CSS/JavaScript 压缩和优化减少渲染阻塞

⚡ 缓存优化

  • FastCGI 缓存可将 TTFB 从数百毫秒降至几十毫秒
  • 服务器并发处理能力提升 50-100 倍
  • 结合 Redis 对象缓存可进一步优化动态内容

🏆 最终效果:通过系统性的压缩与缓存优化,一个典型的 WordPress 站点可以从 PageSpeed 得分 30-50 分提升至 90 分以上,实现真正的高性能网站体验。

回复