內容簡介
Performance Optimisation 是一款免費的全能速度外掛,旨在簡化 WordPress 網站的加速過程。它與多種流行佈景主題和頁面建構器完全相容,提供頁面快取、檔案最小化、圖片優化等功能,讓網站加速變得輕鬆無比。
【主要功能】
• 頁面快取:生成靜態 HTML 檔案,快速加載頁面
• 檔案優化:最小化和合併 JS、CSS 和 HTML
• 圖片優化:自動轉換為 WebP 和 AVIF 格式
• 延遲加載:輕量級 SVG 占位符延遲加載圖片和影片
• 資料庫清理:移除舊的文章修訂和垃圾留言
• 預加載功能:自動預熱快取和關鍵字體
外掛標籤
開發者團隊
📦 歷史版本下載
原文外掛簡介
Performance Optimisation is a free, all-in-one speed plugin that makes your WordPress site faster — without the complexity. Fully compatible with popular themes and page builders (Elementor, Divi, Astra, GeneratePress, Kadence, WooCommerce, Yoast SEO, Rank Math). Page caching, file minification, image optimization, lazy loading, database cleanup, and Redis object cache — all from one clean dashboard.
Why choose Performance Optimisation?
Most performance plugins either do too little or overwhelm you with dozens of confusing settings. This plugin gives you everything you need to speed up WordPress in one place, with safe defaults and clear explanations for every option.
Simple to use: Clean, modern dashboard. Enable what you need, leave the rest off. No guesswork.
Powerful features: Page cache, JS/CSS/HTML minify, WebP/AVIF image conversion, lazy loading, Redis object cache, database cleanup — the full stack.
Safe by default: Aggressive options like defer JS, delay JS, and WooCommerce asset removal are off by default with clear warnings when you turn them on.
Works everywhere: Shared hosting, VPS, dedicated servers, Apache, Nginx — it adapts to your environment.
What does this plugin do?
🚀 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.
📡 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.
Who is this plugin for?
Site owners who want a faster website without hiring a developer.
Freelancers and agencies who need a reliable speed plugin they can deploy across client sites.
Developers who want granular control over caching, minification, and delivery without vendor lock-in.
This plugin bundles 7 Composer packages: voku/html-min (HTML minification), matthiasmullie/minify with its matthiasmullie/path-converter and symfony/css-selector dependencies (CSS/JS minification), tedivm/jshrink (JS minification), voku/simple_html_dom (HTML parsing), and woocommerce/action-scheduler (background job processing).
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.
