外掛說明
Performance Lab 是致力於加強網站效能功能的集合,大部分的功能最後會整合至 WordPress 核心程式中。這個外掛能讓網站管理員在這些功能整合至核心程式前,啟用並測試個別功能以了解相關功能,並提供意見反應讓開發人員改進相關解決方案。
目前這些功能性外掛如下所列:
- Image Placeholders
- Modern Image Formats
- Performant Translations
- Speculative Loading
- Embed Optimizer (實驗性功能)
- Enhanced Responsive Images (實驗性功能)
- Image Prioritizer (實驗性功能)
這些外掛可以在安裝 Performance Lab 後個別安裝,但 Performance Lab 在啟用狀態下,便可確保使用者開發中的新外掛開發佈後,可以即時發現這些效能功能。
安裝方式
自動安裝
- 前往 [外掛]→[安裝外掛]。
- 搜尋「Performance Lab」。
- 安裝並啟用 Performance Lab 外掛。
手動安裝
- 將外掛安裝套件解壓縮所得的
performance-lab
資料夾上傳至網站的/wp-content/plugins/
目錄。 - 前往 [外掛] 頁面。
- 啟用 Performance Lab 外掛。
外掛啟用後
- 前往 [設定]→[效能] 選單。
- 啟用想要使用的個別功能。
常見問題集
-
開發這個外掛的目的為何?
-
Performance Lab 的主要目的在於這些效能功能整合至 WordPress 核心程式前,讓使用者可以進行測試。這個外掛的本質是功能性外掛的集合,這讓它與其他提供非 WordPress 核心程式效能功能的外掛不同,因為其他效能外掛可能會需要 WordPress 核心程式不提供的功能。目前 Performance Lab 提供的效能功能會依照相關規則更新,例如功能整合至 WordPress 核心程式後,便會在外掛中移除,並且新版外掛不定期中加入新功能。
-
這個外掛可以使用於正式網站嗎?
-
依據前述的外掛主要目的,請將它視為包含各種效能功能的 Beta 測試版外掛。請注意,除非是標示為「實驗性功能」的功能,全部功能均已經過測試及確認,使用在正式網站應該沒有問題。與其他外掛相同,使用者均應自負使用風險。
-
使用者可以在何處提交外掛意見反應?
-
這個外掛作為 WordPress 核心程式的功能性外掛,我們非常希望、也非常感謝大家提供意見反應。使用者如果有任何建議或功能要求,可以在外掛的 GitHub 存放庫提出。如果對這個外掛有需要疑難排解協助或提出問題之處,請在外掛的技術支援論壇提出。
-
在何處可以回報安全性程式碼錯誤?
-
效能團隊及 WordPress 社群對安全性程式碼錯誤一向嚴陣以待,我們非常感謝使用者披露相關發現所付出的心力,並會盡全力解決使用者提出的問題。
如需回報安全性問題,請參考 WordPress HackerOne 計畫。
-
如何為這個外掛做出貢獻?
-
非常感謝各位的各種貢獻!請參考核心程式效能團隊手冊以進一步了解參與的方式。
使用者評論
參與者及開發者
變更記錄
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 aWP_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
andFetchpriority
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
todominant-color-images
. (708) - Images: Rename
Dominant Color
module toDominant 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 originaladmin_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 forplugin_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 ofwp_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 totrue
. (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 offilesize
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
toobject-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)