Performance Lab

外掛說明

Performance Lab 是致力於加強網站效能功能的集合,大部分的功能最後會整合至 WordPress 核心程式中。這個外掛能讓網站管理員在這些功能整合至核心程式前,啟用並測試個別功能以了解相關功能,並提供意見反應讓開發人員改進相關解決方案。

目前這些功能性外掛如下所列:

這些外掛可以在安裝 Performance Lab 後個別安裝,但 Performance Lab 在啟用狀態下,便可確保使用者開發中的新外掛開發佈後,可以即時發現這些效能功能。

安裝方式

自動安裝

  1. 前往 [外掛]→[安裝外掛]
  2. 搜尋「Performance Lab」
  3. 安裝並啟用 Performance Lab 外掛。

手動安裝

  1. 將外掛安裝套件解壓縮所得的 performance-lab 資料夾上傳至網站的 /wp-content/plugins/ 目錄。
  2. 前往 [外掛] 頁面。
  3. 啟用 Performance Lab 外掛。

外掛啟用後

  1. 前往 [設定]→[效能] 選單。
  2. 啟用想要使用的個別功能。

常見問題集

開發這個外掛的目的為何?

Performance Lab 的主要目的在於這些效能功能整合至 WordPress 核心程式前,讓使用者可以進行測試。這個外掛的本質是功能性外掛的集合,這讓它與其他提供非 WordPress 核心程式效能功能的外掛不同,因為其他效能外掛可能會需要 WordPress 核心程式不提供的功能。目前 Performance Lab 提供的效能功能會依照相關規則更新,例如功能整合至 WordPress 核心程式後,便會在外掛中移除,並且新版外掛不定期中加入新功能。

這個外掛可以使用於正式網站嗎?

依據前述的外掛主要目的,請將它視為包含各種效能功能的 Beta 測試版外掛。請注意,除非是標示為「實驗性功能」的功能,全部功能均已經過測試及確認,使用在正式網站應該沒有問題。與其他外掛相同,使用者均應自負使用風險。

使用者可以在何處提交外掛意見反應?

這個外掛作為 WordPress 核心程式的功能性外掛,我們非常希望、也非常感謝大家提供意見反應。使用者如果有任何建議或功能要求,可以在外掛的 GitHub 存放庫提出。如果對這個外掛有需要疑難排解協助或提出問題之處,請在外掛的技術支援論壇提出。

在何處可以回報安全性程式碼錯誤?

效能團隊及 WordPress 社群對安全性程式碼錯誤一向嚴陣以待,我們非常感謝使用者披露相關發現所付出的心力,並會盡全力解決使用者提出的問題。

如需回報安全性問題,請參考 WordPress HackerOne 計畫。

如何為這個外掛做出貢獻?

非常感謝各位的各種貢獻!請參考核心程式效能團隊手冊以進一步了解參與的方式。

使用者評論

2025 年 1 月 6 日
I was able to replace other performance plugins with performance lab.
2024 年 12 月 10 日 1 則留言
converting photos from jpg to webp is very fast, everything works well and it’s great.
2024 年 11 月 30 日 1 則留言
Great plugin.
閱讀全部 46 則使用者評論

參與者及開發者

以下人員參與了開源軟體〈Performance Lab〉的開發相關工作。

參與者

〈Performance Lab〉外掛目前已有 22 個本地化語言版本。 感謝全部譯者為這個外掛做出的貢獻。

將〈Performance Lab〉外掛本地化為台灣繁體中文版

對開發相關資訊感興趣?

任何人均可瀏覽程式碼、查看 SVN 存放庫,或透過 RSS 訂閱開發記錄

變更記錄

3.7.0

Enhancements

  • Add guidance for managing Performance feature plugins. (1734)
  • Automatically discover plugin dependencies when obtaining Performance feature plugins from WordPress.org. (1680)
  • Disregard transient cache in perflab_query_plugin_info() when a plugin is absent. (1694)
  • Minify script used for ajax activation of features; warn if absent and serve original file when SCRIPT_DEBUG is enabled. (1658)

Bug Fixes

  • Fix latest plugin version not being downloaded consistently. (1693)

3.6.1

Bug Fixes

  • Fix race condition bug where activating multiple features sequentially could fail to activate some features. (#1675)

3.6.0

Enhancements

  • Use AJAX for activating features / plugins in Performance Lab. (1646)
  • Introduce AVIF header health check. (1612)
  • Install and activate Optimization Detective when the Embed Optimizer feature is activated from the Performance screen. (1644)

Bug Fixes

  • Fix uses of ‘Plugin not found’ string. (1651)

3.5.1

Bug Fixes

  • Account for plugin dependencies when storing relevant plugin info. (1613)

3.5.0

Enhancements

  • Add Web Worker Offloading to list of Performance features. (1577)
  • Only store info for relevant standalone plugins in the transient cache. (1573)
  • Use a single WordPress.org API request to get information for all plugins. (1562)

3.4.1

Bug Fixes

  • Fix Incorrect use of _n(). (1491)

3.4.0

Enhancements

  • Remove Server-Timing metric for the autoloaded options query time. (1456)

Bug Fixes

  • Avoid sending Server-Timing header when buffer is being cleaned. (1443)
  • Fix disabled options from reappearing in Site Health after external update. (1374)
  • Improve Performance screen when external requests to WordPress.org fail. (1474)

3.3.1

Enhancements

  • Add PHPStan strict rules (except for empty.notAllowed). (1241)

Bug Fixes

  • Allow null to be passed into perflab_admin_pointer(). (1393)

3.3.0

Enhancements

  • Bump minimum WP versions and WP version tested up to. (1333)
  • Improve message for WebP site health test. (1249)
  • Remove ‘Requires at least’ and ‘Requires PHP’ from plugin readmes. (1334)
  • Upgrade PHPStan to 1.11.6. (1325)

Bug Fixes

  • Extend core’s Autoloaded Options Site Health test if present (in WP 6.6). (1298)
  • Fix unit tests for multisite. (1327)

3.2.0

Enhancements

  • Add install note after each PerfLab feature plugin in the plugin list table. (1265)
  • Update plugins with new banners and icons. (1272)

Bug Fixes

  • Fix Server-Timing compatibility with other plugins that do output buffering. (1260)
  • Harden autoloaded-options site health test for incorrectly implemented external object cache plugins. (1238)

3.1.0

Enhancements

  • Add progress indicator when activating a feature. (1190)
  • Display plugin settings links in the features screen and fix responsive layout for mobile. (1208)
  • Add plugin dependency support for activating performance features. (1184)
  • Add support for AVIF image format in site health. (1177)
  • Add server timing to REST API response. (1206)
  • Bump minimum PHP requirement to 7.2. (1130)
  • Refine logic in perflab_install_activate_plugin_callback() to rely only on validated slug. (1170)
  • Improve overall code quality with stricter static analysis checks. (775)

Bug Fixes

  • Avoid passing incomplete data to perflab_render_plugin_card() and show error when plugin directory API query fails. (1175)
  • Do not show admin pointer on the Performance screen and dismiss the pointer when visited. (1147)
  • Fix WordPress.DB.DirectDatabaseQuery.DirectQuery warning for Autoloaded Options Health Check. (1179)

3.0.0

Enhancements

  • Add caching to the wordpress.org query to get plugin information. (1022)
  • Add support for autoloading enhancements in WordPress 6.6 trunk to autoloaded options Site Health check. (1112)
  • Bump minimum required WordPress version to 6.4. (1062)
  • Enhance object-cache.php drop-in placement logic to support updating to a newer version of the file. (1047)
  • Implement support for annotating certain plugins as experimental. (1111)
  • Migrate Site Health checks from being modules to becoming part of the plugin core. (1042)
  • Remove modules infrastructure and UI from the plugin. (1060)
  • Support changing autoload value for largest autoloaded options in Site Health check. (1048)
  • Use plugin slug for generator tag. (1103)

Documentation

  • Update tested WordPress version to 6.5. (1027)

2.9.0

Features

  • Infrastructure: Add standalone plugin version constants for auto-sizes and speculation-rules. (958)

Enhancements

  • Infrastructure: Include standalone plugin slugs in generator tag. (949)

Bug Fixes

  • Infrastructure: Sanitize metric name for Server-Timing header. (957)

2.8.0

Features

  • Infrastructure: Introduce UI for managing Performance Lab standalone plugins. (864)

Enhancements

  • Infrastructure: Add support for plugin live preview in the plugin directory. (890)
  • Infrastructure: Allow module can-load.php callbacks to return a WP_Error with more information. (891)
  • Infrastructure: Implement admin pointer to indicate to the user they need to migrate modules to their standalone plugins. (910)
  • Infrastructure: Implement migration logic and UI from Performance Lab modules to their standalone plugins. (899)
  • Infrastructure: Reset admin pointer dismissal for module migration when the user activates a module. (915)

Bug Fixes

  • Infrastructure: Fix construction of translation strings in admin/plugins.php. (925)

2.7.0

Enhancements

  • Images: Remove Fetchpriority module as the functionality is now available in WordPress core. (854)
  • Infrastructure: Bump minimum required PHP version to 7.0 and minimum required WP version to 6.3. (851)

Documentation

  • Infrastructure: Publish Image Placeholders standalone plugin. (842)

2.6.1

Bug Fixes

  • Infrastructure: Remove PHPStan config file from plugin directory. (816)

Documentation

  • Infrastructure: Add standalone plugin assets. (815)

2.6.0

Features

  • Infrastructure: Add output buffering checkbox to Server-Timing screen. (801)
  • Infrastructure: Implement logic to measure specific hook execution time with Server-Timing controlled by a WP Admin screen. (784)

Enhancements

  • Images: Fix incorrect function prefixes in Image Placeholders. (789)
  • Infrastructure: Add early exit clauses to files with procedural code. (790)
  • Infrastructure: Allow disabling Server-Timing entirely using PERFLAB_DISABLE_SERVER_TIMING constant. (795)

Bug Fixes

  • Images: Fix WebP handling when editing images based on WordPress 6.3 change. (796)
  • Infrastructure: Fix errors detected by Plugin Checker. (788)

2.5.0

Enhancements

  • Images: Check for fetchpriority feature being available in WordPress core before loading the module. (769)
  • Database Optimization: Remove SQLite module. (764)
  • Infrastructure: Bump tested up to version to 6.3. (772)

2.4.0

Enhancements

  • Database: Implement migration prompt to migrate from SQLite module to standalone plugin due to removal in the following release. (739)
  • Infrastructure: Enhance code quality by adding PHPStan and fixing level 0 issues. (730)
  • Infrastructure: Use static closures for minor performance improvement whenever instance access is not needed. (729)

Bug Fixes

  • Database: Fix SQLite module deactivation routine to make standalone plugin migration work correctly. (743)
  • Infrastructure: Make Server-Timing header output more robust. (736)

2.3.0

Enhancements

  • Images: Configure Dominant Color and Fetchpriority modules for their standalone plugins. (704)
  • Infrastructure: Temporarily remove Image Placeholders from standalone plugins.json definition. (719)
  • Infrastructure: Use dynamic version from plugins.json for manual workflow. (710)

Bug Fixes

  • Images: Add dominant color styling before any existing inline style attributes. (716)
  • Infrastructure: Resolve low-severity security advisory GHSA-66qq-69rw-6×63.

2.2.0

Enhancements

  • Images: Remove “experimental” flag from Fetchpriority module. (702)
  • Infrastructure: Implement infrastructure for launching standalone plugins from modules, including Modern Image Formats. (699)
  • Infrastructure: Include WordPress-Extra rules in PHPCS configuration and fix resulting problems. (695)

Bug Fixes

  • Images: Sanitize target param before using it. (690)

Documentation

  • Images: Change module slug/directory from dominant-color to dominant-color-images. (708)
  • Images: Rename Dominant Color module to Dominant Color images. (705)

2.1.0

Enhancements

  • Infrastructure: Add wp-total metric to default Server-Timing metrics. (669)
  • Infrastructure: Ensure module load.php files really only load other code to prevent conflicts in standalone plugins. (674)

Bug Fixes

  • Infrastructure: Fix problems with placing object-cache.php drop-in. (672)

2.0.0

Enhancements

  • Object Cache: Update WordPress version to 6.1 and remove Cache modules. (641)
  • Measurement: Add perflab_disable_object_cache_dropin filter. (629)
  • Database: Add an indicator in the adminbar to show when using SQLite. (604)

Bug Fixes

  • Images: Check for existing $metadata['sizes'] to fix PHP warning. (648)
  • Images: Use correct number of arguments in filter callback. (634)
  • Database: Fix invalid docs and return types as highlighted by static analysis. (645)
  • Infrastructure: Fix incorrect usage of plugin_action_links_* filter. (647)

Documentation

  • Infrastructure: Add file header to object-cache drop-in to clarify purpose. (649)

1.9.0

Enhancements

  • Database: Remove warning about multi-server environment from the SQLite module description. (619)

Bug Fixes

  • Infrastructure: Enhance object-cache.php drop-in interoperability with other plugins. (616)

1.8.0

Features

  • Measurement: Implement Server-Timing API foundation as well as basic load time metrics. (553)
  • Database: Implement new experimental SQLite integration module. (547)
  • Images: Implement new experimental fetchpriority module. (528)

Bug Fixes

  • Database: Fix SQLite notices related to undefined properties. (600)
  • Database: Fix incorrect handling of admin_email and actual admin user’s email when original admin_email user was deleted. (603)
  • Database: Make WP filesystem setup more robust to prevent potential errors. (595)

1.7.0

Enhancements

  • Images: Change WP Image editor quality for mime types. (571)
  • Infrastructure: Introduce database focus area, rename JavaScript focus area to JS & CSS, and phase out Site Health focus area. (566)

Bug Fixes

  • Images: Avoid potentially adding invalid attributes or duplicates for dominant color images. (578)
  • Images: Fix fatal error in REST API response when an image has no attachment metadata. (568)
  • Images: Fix image focal point bug when dominant color is enabled by not overriding style attribute. (582)
  • Images: Fix opt-in checkbox for generating WebP and JPEG to also show on Multisite. (565)

1.6.0

Enhancements

  • Site Health: Only load Site Health checks for persistent cache and full page cache when not available in core. (543)
  • Images: Add checkbox to Settings > Media to control whether to generate JPEG in addition to WebP. (537)
  • Images: Generate only WebP images by default for JPEG and WebP uploads. (527)
  • Infrastructure: Bump minimum WordPress requirement to 6.0. (549)

1.5.0

Enhancements

  • Site Health: Improve autoloaded options check by highlighting largest autoloaded options. (353)

1.4.0

Enhancements

  • Images: Enhance JS replacement mechanism for WebP to JPEG to more reliably replace full file name. (443)
  • Images: Introduce webp_uploads_get_content_image_mimes() to get content image MIME replacement rules. (420)
  • Infrastructure: Add PERFLAB_PLUGIN_DIR_PATH constant for plugin_dir_path(). (429)
  • Infrastructure: Rename Site Health check modules for language and consistency. (423)

Bug Fixes

  • Site Health: Fix incorrect usage of badge colors in all Site Health checks. (472)
  • Images: Add the original image’s extension to the WebP file name to ensure it is unique. (444)
  • Images: Fix REST API support for plain permalinks. (457)
  • Infrastructure: Remove plugin option network-wide for Multisite during uninstall. (458)

1.3.0

Enhancements

  • Images: Add replacing of images only in frontend context. (424)
  • Images: Allow control for which image sizes to generate additional MIME type versions. (415)
  • Images: Discard WebP image if it is larger than corresponding JPEG image. (418)
  • Images: Optimize computing dominant color and transparency for images by combining the two functions. (381)
  • Images: Provide fallback JPEG images in frontend when WebP is not supported by the browser. (360)
  • Images: Rely on wp_get_image_editor() methods argument to check whether it supports dominant color methods. (404)
  • Images: Remove experimental label from Dominant Color module and turn on by default for new installs. (425)
  • Site Health: Remove perflab_aea_get_resource_file_size() in favor of wp_filesize(). (380)
  • Site Health: Update documentation link for autoloaded options. (408)
  • Infrastructure: Implement mechanism to not load module if core version is available. (390)

Bug Fixes

  • Images: Ensure incorrect usage of webp_uploads_upload_image_mime_transforms filter is treated correctly. (393)
  • Images: Fix PHP notice and bug in logic for when webp_uploads_prefer_smaller_image_file filter is set to true. (397)
  • Images: Fix an infinite loop in the WebP fallback mechanism. (433)
  • Images: Fix dominant color upload process to not override potential third-party editors. (401)
  • Images: Remove additional image backup sources & sizes files when attachment deleted. (411)
  • Infrastructure: Avoid including .husky directory in plugin ZIP. (421)
  • Infrastructure: Do not show admin pointer in multisite Network Admin. (394)

1.2.0

Features

  • Images: Add Dominant Color module to provide color background for loading images. (282)
  • Site Health: Add Site Health check for Full Page Cache usage. (263)

Enhancements

  • Images: Update webp_uploads_pre_generate_additional_image_source filter to allow returning file size. (334)
  • Infrastructure: Introduce plugin uninstaller routine. (345)
  • Infrastructure: Use wp_filesize instead of filesize if available. (376)

Bug Fixes

  • Images: Avoid overwriting existing WebP files when creating WebP images. (359)
  • Images: Back up edited full image sources when restoring the original image. (314)

1.1.0

Features

  • Infrastructure: Add Performance Lab generator meta tag to wp_head output. (322)

Enhancements

  • Images: Introduce filter webp_uploads_pre_generate_additional_image_source to short-circuit generating additional image sources on upload. (318)
  • Images: Introduce filter webp_uploads_pre_replace_additional_image_source to short-circuit replacing additional image sources in frontend content. (319)
  • Images: Refine logic to select smaller image file in the frontend based on webp_uploads_prefer_smaller_image_file filter. (302)
  • Images: Replace the featured image with WebP version when available. (316)
  • Site Health: Update Site Health Autoloaded options documentation link. (313)
  • Infrastructure: Avoid unnecessarily early escape of Site Health check labels. (332)

Bug Fixes

  • Object Cache: Correct label for persistent object cache Site Health check. (329)
  • Images: Only update the specified target images when an image is edited. (301)

1.0.0

Features

  • Images: Generate secondary image MIME types when editing original image. (235)

Enhancements

  • Images: Introduce webp_uploads_prefer_smaller_image_file filter allowing to opt in to preferring the smaller image file. (287)
  • Images: Select MIME type to use in frontend content based on file size. (243)
  • Site Health: Update Site Health reports copy for more clarity and consistency. (272)

Documentation

  • Infrastructure: Define the plugin’s version support and backward compatibility policy. (240)

1.0.0-rc.1

Enhancements

  • Images: Change expected order of items in the webp_uploads_content_image_mimes filter. (250)
  • Images: Replace images in frontend content without using an additional regular expression. (262)
  • Images: Restore and backup image sizes alongside the sources properties. (242)

Bug Fixes

  • Images: Select image editor based on WebP support instead of always using the default one. (259)

1.0.0-beta.3

Bug Fixes

  • Infrastructure: Ensure default modules are loaded regardless of setting registration. (248)

1.0.0-beta.2

Features

  • Images: Create additional MIME types for the full size image. (194)
  • Site Health: Add module to warn about excessive amount of autoloaded options. (124)

Enhancements

  • Images: Adds sources information to the attachment media details of the REST response. (224)
  • Images: Allow developers to select which image format to use for images in the content. (230)
  • Images: Allow developers to tweak which image formats to generate on upload. (227)
  • Images: Replace the full size image in the_content with additional MIME type if available. (195)
  • Object Cache: Include memcached extension in checks for object cache support. (206)
  • Infrastructure: Add plugin banner and icon assets. (231)
  • Infrastructure: Use .gitattributes instead of .distignore to better support ZIP creation. (223)

Bug Fixes

  • Images: Use original image to generate all additional image format sub-sizes. (207)
  • Infrastructure: Replace unreliable activation hook with default value for enabled modules. (222)

Documentation

  • Infrastructure: Update release instructions to include proper branching strategy and protect release branches. (221)

1.0.0-beta.1

Features

  • Images: Add WebP for uploads module. (32)
  • Images: Support retry mechanism for generating sub-sizes in additional MIME types on constrained environments. (188)
  • Images: Update the_content with the appropriate image format. (152)
  • Site Health: Add WebP support in site health. (141)
  • Site Health: Add module to alert about excessive JS and CSS assets. (54)
  • Object Cache: Add Site Health check module for persistent object cache. (111)
  • Infrastructure: Add settings screen to toggle modules. (30)
  • Infrastructure: Added admin pointer. (199)

Enhancements

  • Object Cache: Always recommend object cache on multisite. (200)
  • Images: Create image sub-sizes in additional MIME types using sources for storage. (147)
  • Images: Update module directories to be within their focus directory. (58)
  • Site Health: Enhance detection of enqueued frontend assets. (136)
  • Infrastructure: Add link to Settings screen to the plugin’s entry in plugins list table. (197)
  • Infrastructure: Enable all non-experimental modules on plugin activation. (191)
  • Infrastructure: Include generated module-i18n.php file in repository. (196)
  • Infrastructure: Introduce perflab_active_modules filter to control which modules are active. (87)
  • Infrastructure: Remove unnecessary question marks from checkbox labels. (110)
  • Infrastructure: Rename object-caching to object-cache. (108)

Bug Fixes

  • Images: Ensure the -scaled image remains in the original uploaded format. (143)
  • Images: Fix typo to access to the correct image properties. (203)
  • Infrastructure: Ensure that module header fields can be translated. (60)

Documentation

  • Site Health: Mark Site Health Audit Enqueued Assets module as experimental for now. (205)
  • Infrastructure: Add readme.txt and related update script. (72)
  • Infrastructure: Add changelog generator script. (51)
  • Infrastructure: Add contribution documentation. (47)
  • Infrastructure: Add release documentation. (138)
  • Infrastructure: Define module specification in documentation. (26)