內容簡介
Performance Optimisation 是一款免費的 WordPress 性能外掛,旨在幫助網站擁有者提升頁面加載速度,整合了頁面快取、CSS 和 JavaScript 優化、圖片優化及 Core Web Vitals 監控,讓使用者在一個清晰的控制台中管理所有功能。
【主要功能】
• 頁面快取:提供靜態 HTML 頁面,並智能失效內容更新
• Core Web Vitals 監控:測量 LCP、INP 和 CLS 指標
• 圖片優化:將圖片轉換為 WebP 和 AVIF 格式
• CSS 和 JavaScript 優化:壓縮和合併資源,延遲加載選定腳本
• 安全預設:逐一測試功能,進階選項預設關閉
外掛標籤
開發者團隊
📦 歷史版本下載
原文外掛簡介
Performance Optimisation is a free WordPress performance plugin for site owners who want faster pages without a complex stack of separate tools. It combines page caching, CSS and JavaScript optimization, image optimization, and Core Web Vitals monitoring in one clear dashboard.
Start with the features that match your hosting and site setup, then test changes one at a time. Aggressive options are opt-in and clearly explained.
For the maintained, code-accurate guides, see the Performance Optimisation documentation, including installation, feature behavior, settings, WP-CLI, REST, troubleshooting, and the generated source reference.
Start safely
Performance Optimisation is free and open source under GPLv2 or later. There is no premium version, feature lock, or subscription requirement. The plugin does not ask for a rating or a review to use its features.
Start with the Safe preset, test the site, review Performance Audit, and enable advanced options only when you have a reason to test them. The Dashboard explains what each change does, where to verify it, and how to undo or disable it. Results depend on your host, theme, plugins, content, and traffic.
Why choose Performance Optimisation?
Most performance plugins either cover only one job or bury the important controls in a large settings list. Performance Optimisation gives site owners a practical starting point:
Page caching: Serve static HTML pages with smart invalidation when content changes.
Core Web Vitals monitoring: Measure LCP, INP, and CLS with PageSpeed Insights and optional first-party RUM.
Image optimization: Convert images to WebP and AVIF, lazy-load media, and preload important images.
CSS and JavaScript optimization: Minify and combine assets, defer or delay selected scripts, and remove WordPress bloat.
Safe defaults: Test one feature at a time; advanced defer, delay, and asset-removal options are off by default.
Core Performance Features
🚀 Page Caching
Generate static HTML files for your pages so they load instantly. Includes Gzip compression, CDN support, and smart cache clearing when you update content.
📦 File Optimization
Minify and combine JavaScript, CSS, and HTML. Defer or delay render-blocking scripts. Remove WordPress bloat like emojis, embeds, dashicons, and XML-RPC.
🖼️ Image Optimization
Convert images to next-gen WebP and AVIF formats automatically. Lazy load images, iframes, and videos with lightweight SVG placeholders. Preload critical images for faster LCP.
⚡ Preloading & Prefetching
Warm up your cache automatically. Preconnect to third-party origins, prefetch DNS, and preload critical fonts and CSS for faster page rendering.
🗄️ Database Cleanup
Remove post revisions, auto-drafts, spam comments, expired transients, and orphaned metadata. Schedule automated cleanups daily, weekly, or monthly.
🔴 Redis Object Cache
Built-in Redis object cache with support for standalone, Sentinel, and Cluster topologies. TLS/SSL encryption included. No separate plugin needed.
📊 Performance Monitor
Built-in performance scanner that measures real load times, TTFB, DNS resolution, and Core Web Vitals — right from your WordPress dashboard.
Advanced Features
📡 Real-User Monitoring (RUM)
Collects anonymised field Web Vitals (LCP, INP, CLS) from real visitors and charts trends in the dashboard, so you can see what each optimisation actually changed.
🤖 AI Adaptive Suggestions
Heuristic auto-tune that reads RUM trends and audit results to suggest safe next steps — read-only recommendations, never silent changes.
🔀 LiteSpeed Coexistence
Auto-detects LiteSpeed/OLS servers and LSCache: pick Auto, WPPO, LiteSpeed, or Standalone mode, with purge sync and header-protocol support so the two caches never fight.
🧩 Edge Cache & CDN Purge
Purge fan-out for Cloudflare, Bunny, and Varnish edge caches plus per-mapping CDN URL rewriting with attribute controls.
🕷️ Cache Crawler
Background crawler (WP-Cron/Action Scheduler) that warms the static cache across a variant matrix with concurrency and load limits.
⏪ bfcache Support
Serves revalidatable cache headers for logged-in users so the browser back/forward cache keeps working instead of forcing full reloads.
📄 llms.txt
Auto-generated /llms.txt and /llms-full.txt virtual files (refreshed daily) so AI crawlers and assistants can understand your site.
🔌 ESI & Abilities API
LiteSpeed ESI bridge for dynamic fragments (LSWS Enterprise; AJAX fallback on OLS) and a WordPress Abilities/MCP surface (abilities like performance-optimisation/cache-management) for programmatic access.
🛠️ Developer Friendly
System Info dashboard, Google PageSpeed Insights integration, per-page asset manager, and import/export settings.
Support
Before reporting a problem, disable the most recent advanced optimization, save, clear the affected page cache, and test the site again. The Support and safe recovery guide explains the narrow rollback path.
When you open a support issue, include the affected URL, exact steps, WordPress/PHP/server versions, cache owner, and the feature you changed. Add redacted output from wp wppo system-info and wp wppo verify. Never post passwords, API keys, cookies, bearer tokens, session IDs, private customer data, or database exports.
External Services
This plugin relies on the following external services. The PageSpeed and Google Fonts requests are only made after an explicit administrator action as described below. Edge-cache purges (Cloudflare, Bunny and Varnish) are the one exception: the plugin calls them automatically after it clears its own page cache — including on post publish/update — but only when the administrator has already configured the integration and stored the relevant credentials. Each entry lists the exact data sent and how to opt out.
Google PageSpeed Insights API (https://www.googleapis.com/pagespeedonline/v5/runPagespeed)
Purpose: Provides Lighthouse performance scores, Core Web Vitals, and diagnostic audits for the URL you choose to scan. Used by the Dashboard → Performance Audit → PageSpeed panel.
When: Only when an administrator who has set a PageSpeed API key (Performance Audit → PageSpeed API Key) clicks “Scan” (or when the daily auto-rescan cron runs if that option is enabled). No request is made on page load, and no request is made without a stored API key.
Where: The request is made server-side via wp_remote_get to https://www.googleapis.com/pagespeedonline/v5/runPagespeed with query params url (the scanned URL), strategy (mobile or desktop), category (PERFORMANCE, ACCESSIBILITY, BEST_PRACTICES, SEO), and key (your API key).
What data is sent: The public URL to audit and the chosen strategy. The API key is sent as authentication. No site visitor data, cookies, or admin credentials are sent. Results are cached as a transient (wppo_pagespeed_*) for 24 hours and optionally stored as trend history in the wppo_web_vitals_trends option.
Terms/Privacy: https://developers.google.com/speed/docs/insights/v5/get-started and https://policies.google.com/privacy. You must obtain your own API key from https://console.cloud.google.com/; the plugin never ships a default key.
EOL/Opt-out: Remove the API key or disable the PageSpeed panel to stop all requests. No further calls are made.
Google Fonts CDN (https://fonts.googleapis.com and https://fonts.gstatic.com)
Purpose: When the File Optimization option “Host Google Fonts Locally” is enabled, the plugin detects Google Fonts CSS requested via fonts.googleapis.com and downloads the CSS and associated font files (fonts.gstatic.com, woff2) to serve locally (wp-content/cache/wppo/fonts/). This eliminates external DNS lookups on the frontend, improves GDPR compliance, and enables font-display: swap.
When: Only when “Host Google Fonts Locally” is enabled and a page or enqueued stylesheet contains a fonts.googleapis.com URL (via style_loader_tag or an @import/link in the HTML buffer). Each unique Google Fonts CSS URL is fetched once and then served from the local cache. When the option is disabled, the plugin makes no requests to Google Fonts; the browser loads fonts directly from Google as authored.
Where: Server-side via wp_remote_get to https://fonts.googleapis.com/... (CSS, using a Chrome 120 UA to request woff2) and https://fonts.gstatic.com/... (font file, woff2). Timeouts are 20s (CSS) and 30s (font file).
What data is sent: Only the Google Fonts stylesheet URL as authored in the theme/plugin (e.g. https://fonts.googleapis.com/css2?family=Inter:wght@400). No visitor IP beyond the server’s outbound request, no cookies, and no site content is sent.
Terms/Privacy: https://developers.google.com/fonts/faq and https://policies.google.com/privacy.
EOL/Opt-out: Disable “Host Google Fonts Locally” to stop all server-side fetches; existing cached files remain in wp-content/cache/wppo/fonts/ until cleared via “Clear All Cache” or the plugin is uninstalled.
Cloudflare cache purge (https://api.cloudflare.com/client/v4/zones/{zoneId}/purge_cache)
Purpose: Purge the configured Cloudflare zone cache whenever the plugin clears its own page cache, so visitors do not receive stale HTML after content or settings change.
When: Automatically after wppo_after_cache_clear fires — this includes post publish/update (save_post), theme/plugin changes, settings saves and manual “Clear All Cache”. No request is made unless an administrator has stored a Cloudflare API token (constant WPPO_CLOUDFLARE_API_TOKEN) and a Zone ID in the Edge Cache settings.
Where: Server-side wp_remote_request POST to https://api.cloudflare.com/client/v4/zones/{zoneId}/purge_cache. A full purge sends {"purge_everything":true}; a single-page clear sends {"files":["
What data is sent: The Cloudflare Zone ID (in the URL), the API token (as an Authorization: Bearer header) and either the purge-everything flag or the URL(s) being purged. No visitor data, cookies, or site content are sent.
Terms/Privacy: https://www.cloudflare.com/terms/ and https://www.cloudflare.com/privacypolicy/.
Opt-out: Remove the WPPO_CLOUDFLARE_API_TOKEN constant, clear the Zone ID, or set the CDN purge service to “None” in the Edge Cache settings. No further purge calls are made.
Bunny pull-zone cache purge (https://api.bunny.net/pullzone/{pullZoneId}/purgeCache)
Purpose: Purge the configured Bunny pull zone whenever the plugin clears its own page cache, so edge visitors do not receive stale HTML.
When: Automatically after wppo_after_cache_clear (post publish/update, settings saves, manual cache clear), but only when an administrator has stored a Bunny API key (constant WPPO_BUNNY_API_KEY) and a Pull Zone ID in the Edge Cache settings. Bunny only supports all-or-nothing purges, so single-page clears skip it.
Where: Server-side wp_remote_request POST to https://api.bunny.net/pullzone/{pullZoneId}/purgeCache.
What data is sent: The Pull Zone ID (in the URL) and the API key (as an AccessKey header). No request body, visitor data or site content are sent.
Terms/Privacy: https://bunny.net/terms/ and https://bunny.net/privacy/.
Opt-out: Remove the WPPO_BUNNY_API_KEY constant and/or clear the Pull Zone ID. No further purge calls are made.
Varnish cache purge (administrator-provided endpoints)
Purpose: Send HTTP PURGE requests to the Varnish endpoints you configure, so your own edge/Varnish layer is invalidated together with the plugin cache.
When: Automatically after wppo_after_cache_clear (post publish/update, settings saves, manual cache clear), but only when you have entered one or more Varnish purge URLs in the CDN settings.
Where: Server-side wp_remote_request PURGE calls to the exact URLs you entered (capped at 20 per purge, filterable). No vendor service is contacted.
What data is sent: Only the HTTP PURGE request to your configured endpoint; no site content or visitor data.
Opt-out: Remove the configured Varnish purge URLs. No further purge calls are made.
First-party Real-User Monitoring (RUM) data
When Real-User Monitoring is enabled (Dashboard → Web Vitals), the plugin records anonymised field metrics only — the page path and that page’s Largest Contentful Paint (LCP), Interaction to Next Paint (INP) and Cumulative Layout Shift (CLS) samples. No cookies, names, email addresses, user IDs, form values, or IP addresses are stored with the samples. A visitor IP is read into memory solely to rate-limit the public beacon (120 requests/hour) and is never persisted. Metrics are aggregated and stored only in your own site’s database (wppo_web_vitals_rum option plus per-path trend data), retained on a rolling 14-day window (up to 200 paths/day, 600 paths total), and are never sent to the plugin author or any third party. Disabling RUM stops collection; uninstalling the plugin removes the stored data. See includes/class-rum.php.
