Performance Chat Summary: 3 September 2024

Meeting agenda here and the full chat log is available beginning here on Slack.

Announcements

  • Welcome to our new members of #core-performance
  • Last week we reached over 1,000 members of our channel
  • WordCampWordCamp WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what they’ve learned throughout the year and share the joy. Learn more. US is coming up Sep 17-20 in Portland, Oregon – we will have a performance table at Contributor DayContributor Day Contributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of https://make.wordpress.org/ There are many teams that people can participate in, each with a different focus. https://2017.us.wordcamp.org/contributor-day/ https://make.wordpress.org/support/handbook/getting-started/getting-started-at-a-contributor-day/. with Adam
  • WordPress 6.7 BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 1 is October 1

Priority Items

  • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
  • Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party (and other performance plugins)
    • Next milestone
    • Clarification on September release date due to clash with WordCamp US
  • Active priority projects

WordPress Performance Trac Tickets

Performance Lab Plugin (and other Performance Plugins)

  • Discussed the next Performance Lab release moving a week later to Sep 23 due to WordCamp US
  • @flixos90 While not related to WordPress/performance, I spent some time last week documenting the processes for how the Plugin Checker works, see https://github.com/WordPress/plugin-check/issues/597 and https://docs.google.com/document/d/1wDGZBwWB2WAxfbHE3lygIzQFK8IssCa5apOyaBolukQ/edit. Since the logic is quite complex to follow with the different possible scenarios, this is probably valuable to have as a reference, so please have a look if you’re interested, should help any contributor to PCP
    • Eventually, after ironing out remaining questions and functional quirks, we could add a version of that to the docs folder of the repository

Active Priority Projects

Investigate INP Improvements

  • No updates this week

Improving the calculation of image size attributes

Enable Client Side Modern Image Generation

  • @swissspidy Working on GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ PRs for media, but currently focusing on my WCUS talk

Enhance Onboarding Experience of Performance Lab Plugin

  • @flixos90 last week we informally chatted a bit more about asking some attendees at the WCUS booth to test using the PL plugin, to see how they experience the onboarding, where they may be confused or have questions. So that’s definitely something we’re going to incorporate in the Google booth section for performance – primarily for attendees that may not be familiar with the plugin yet, or at least haven’t used it before

Open Floor

  • Discussion around this Slack thread for persistent object cache
    • @westonruter I suppose the test for object caching should only be prominent if a site does not have page caching. A site may not use page caching due to it being highly dynamic or acquiring users to be logged in. For such a site, object caching would perhaps be the next best thing instead of page caching.
    • @joemcgill There are so many “it depends” scenarios when it comes to what caching strategy is best. For example, if you’re running a site like a store that needs to serve dynamic data and can’t use a full page cache, an object cache will reduce the load on the DB, which should speed up requests. However, if you run a site that can make use of a full page cache, that will usually be better because it avoids any need for the server to load data from the DB and render the page at all. For many sites, full page cache is probably a more meaningful strategy. Setting up an object cache is more complex and usually is not something folks will set up themselves—instead, relying on whatever their host has set up.
    • @joemcgill It’s possible that the Site Health message could be improved so most site owners aren’t confused by the nuances of all these options and focus only on the things that most people can actually affect, e.g., setting up a full-page caching solution. Hosts can also modify CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.’s default site health checks to give better guidance on their hardware. Possibly something to chat about with the #hosting team
    • @paaljoachim asked What can he do from the sideline? Should I mention this discussion in the hosting channel? Something else? Should I leave it up to you in this channel to followup on this?
    • @thelovekesh As the number of plugins in the PL mono-repo grows, CI times are increasing accordingly. To address this, we should update our workflows to:
      • 1. Run tests only for the plugin whose files have been updated.
      • 2. Apply the same approach for linting and static analysis.
    • This issue also impacts local development, particularly with PHPStan. While linting is fast with each commit(pre-commit hook), static analysis still runs across the entire codebase.
      • @westonruter Good idea, although there are risks for doing this when there are plugin dependencies. Like if someone changes code in Optimization Detective which Image Prioritizer depends on, then this might slip under the radar. We could specifically account for plugin dependencies

Our next chat will be held on Tuesday, September 10, 2024 at 15:00 UTC in the #core-performance channel in Slack.

#core-performance, #performance, #performance-chat, #summary

Performance Chat Summary: 27 August 2024

The full chat log is available beginning here on Slack.

Upcoming WordPress 6.7 release

We reviewed the 6.7 milestone for performance focus tickets.

  • #61103 (marked as an early ticketticket Created for both bug reports and feature development on the bug tracker.) – @flixos90 had just reviewed, and @pbiron will update the PR.
  • #61847@mukesh27 is working on a PR for this.
  • @adamsilverstein shared that he had a couple of small AVIF fixes that he’s planning to move to the milestone

 Next Performance Lab release

The current milestones can be found at https://github.com/WordPress/performance/milestones, and the release date is Sept 16. @joemcgill questioned whether this date will conflictconflict A conflict occurs when a patch changes code that was modified after the patch was created. These patches are considered stale, and will require a refresh of the changes before it can be applied, or the conflicts will need to be resolved. with WCUS that week.

  • @adamsilverstein is working on a PR for the Modern Images pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party to include converting upload PNGs in addition to JPEGs that I hope will be ready for the next release.
  • @thelovekesh is working on Web Worker Offloading(WWO) plugin to make it ready for WPOrg. Ongoing tasks:

Priority Projects

Refer to the overview issues in our GH Project board.

Open floor

Conversation about priority projects bled over into open floor. No other items were discussed.

Our next chat will be held on Tuesday at 15:00 UTC in the #core-performance channel in Slack.

#core-performance, #performance, #performance-chat, #summary

Performance Chat Summary: 20 August 2024

Meeting agenda here and the full chat log is available beginning here on Slack.

Announcements

Priority Items

  • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
  • Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party (and other performance plugins)
  • Active priority projects

WordPress Performance Trac Tickets

  • There are currently 23 performance issues in 6.7
  • @westonruter for #61734 I’d appreciate a second pair of eyes to validate or invalidate my findings for adding fetchpriority=low to the interactivity APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. module scripts. In theory this should improve performance and I swear I saw it did at first, but then I didn’t see improvement but regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5.. Please help with my sanity
  • @westonruter the auto-sizes ticketticket Created for both bug reports and feature development on the bug tracker. #61847 is still assigned to Future Release – this should be tagged with 6.7 – this has now been completed

Performance Lab Plugin (and other Performance Plugins)

Active Priority Projects

Improving the calculation of image size attributes

  • @mukesh27 I have been working on the definition for follow-up work to improve the image sizes algorithm. will share more update in upcoming weeks.
    • Develop a system to incorporate layout constraints from ancestor blocks (e.g., group, row, columns, etc) into the sizes calculation.

Plugin Check

Open Floor

  • @adamsilverstein I have been working on measuring the impact of the features we have been developing by querying public datasets to measure CWV metrics for sites that installed each of our plugins. In my colab, I take each feature (identified by the generator tags we add) and find a set of sites that have enabled that feature. I compare their CWV pass rates to a date before they added the feature, then subtract out the CWV changes from a set of sites that _didn’t_ install the feature.
  • @annezazu Another topic/nudge for open floor: Starting the 6.7 roadmap post and wanted to pingPing The act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test it’s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of “Ping me when the meeting starts.” to see what might be on ya’ll’s radar. Can you share there with me?  I see the above Current release (6.7) focus for now.
  • @flixos90 just sharing a brief not really performance-related but potentially interesting query result I implemented yesterday: https://github.com/GoogleChromeLabs/wpp-research/pull/150
    This shows that almost 80% of WordPress sites use a “static front pageStatic Front Page A WordPress website can have a dynamic blog-like front page, or a “static front page” which is used to show customized content. Typically this is the first page you see when you visit a site url, like wordpress.org for example.” rather than displaying their “latest posts” on the home page. I believe that’s what most of us would expect in this age, but it begs the question why “latest posts” is still the default for new sites, when it’s only a good default for 20% of sites.

Our next chat will be held on Tuesday, August 27, 2024 at 15:00 UTC in the #core-performance channel in Slack.

#core-performance, #performance, #performance-chat, #summary

Performance Chat Summary: 13 August 2024

The full chat log is available beginning here on Slack.

Upcoming Release

The next release for Performance Lab and related performance plugins is scheduled for Monday, August 19 at 1:00 PM EDT

@westonruter shared a pulse check on Monday noting that the milestones are on average 55% complete. During the meeting he mentioned that the Modern Image Formats issues still needs to most eyes.

@flixos90: “It seems there have been quite a few bugs piling up from the picture element support, but I haven’t been able to look closely yet. Is there an overarching theme that these fall into? E.g. ecosystem compatibility, or edge-cases, or compatibility with other image features of the pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party?”

@adamsilverstein: “…the picture element support missed a few things we could have caught before launching. we also did already fix a few compatibility issues that would have been hard to catch”

This led to a longer conversation about the goal of experimenting with picture support from a performance point of view.

@flixos90: “My concern with this is mostly about how much of a priority it should be compared to everything else we have on our plate as a team. Of course there’s value in exploring picture element in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., but for instance if it doesn’t help much with AVIF, I question that we prioritize it this much. It’s by no means a simple feature to implement and land, and the bugs require a lot of attention that is taken away from the other things we’re working on (e.g. better responsive image sizes handling) which IMO have a greater performance benefit”

Active Priority Projects

Open Floor

@clorith raised the following:

“I’m thinking about making a new core ticketticket Created for both bug reports and feature development on the bug tracker. to introduce a Sustainabiliuty classification to the Site Health checks, as some of the performance ones, when there’s no real performance problem as is, but the recommendations would be good for sustainability., Just wanted to voice it with y’all first before I started throginw out ideas to change your classifications”

@flixos90: “Definitely some overlap between the two, but I like the idea. Sustainability is a different motivator than performance and some checks may apply more to one than the other. Either way, it’s a good way to promote certain checks and of course sustainability”

Next step is that @clorith plans to open a ticket with recommendations for which checks to possibly reclassify to get input. 

Our next chat will be held on Tuesday, August 20, 2024 at 15:00 UTC in the #core-performance channel in Slack.

#core-performance, #performance, #performance-chat, #summary

Performance Chat Summary: 6 August 2024

Meeting agenda here and the full chat log is available beginning here on Slack.

Announcements

Priority Items

  • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
    • Current release (6.7)
    • Future releases
  • Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party (and other performance plugins)
  • Active priority projects

WordPress Performance Trac Tickets

Performance Lab Plugin (and other Performance Plugins)

  • @mukesh27 has been working on the following
    • Modern Image Formats plugin:
    • PR #1408 – Picture element: Correct the fallback image – Ready for review
    • PR #1437 – Picture element: Full size image is missing in PICTURE > SOURCE srcset (Blocked by above PR 1408)
    • Issue #1439 – Picture element: Small image size issues – Open for discussion
  • @thelovekesh PR for web worker offloading plugin is merged – https://github.com/WordPress/performance/pull/1247
    • @westonruter this has not yet been added to wp.org as ideally it would first have some built-in feature to offload a frontend script to the worker. Like offloading gtag. The challenge is that there is no consistent way that other plugins add gtag to the page. However, the output buffer and/or tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) visitor infrastructure provided Optimization Detective could be used to rewrite external gtag scripts to use Partytown. This would be another nice cross-plugin integration in Performance Lab, as is also seen in Embed Optimizer and Enhanced Responsive Images.
    • @joemcgill Is there a simple example use case that could be used to demo the APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. that developers would need to use to offload their own scripts using this plugin? Maybe a coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. that adds some non-critical JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors.?
    • @westonruter Yes, it is in the readme, or at least in the PR description. The readme’s instructions should be fleshed out with the same content as the PR description
    • @adamsilverstein We could also document how to leverage with some of the top plugins eg analytics plugins
    • @westonruter Yeah. We could look at how the most popular plugins are adding gtag to the page (e.g. Site Kit), and specifically target them.
  • @westonruter There are quite a few bugs for Modern Image Formats, some of which are listed above, so let’s investigate that
    • Otherwise, Modern Image Formats seems like it needs the most attention as of now, given it seems to have the most bugs and support topics.

Active Priority Projects

Improving the calculation of image size attributes

  • @joemcgill advised that he and @mukesh27 have discussed creating a ticketticket Created for both bug reports and feature development on the bug tracker. to propose adding auto-sizes to core

Plugin Check

Open Floor

  • There were 2 tickets we wanted to discuss today
    • #42743
      • @pbearne I have been trying to find a good way to Disable wp_options autoload for inactive widgets. Any suggestions are welcome
      • We can turn it off if wp_use_widgets_block_editor() returns false
        but with the widgets_block_editor code, the inactive widgets are kept with the active
    • #60414
      • @joemcgill This came up during Dev Chat last week as well. For this to move forward it really needs at least one committercommitter A developer with commit access. WordPress has five lead developers and four permanent core developers with commit access. Additionally, the project usually has a few guest or component committers - a developer receiving commit access, generally for a single release cycle (sometimes renewed) and/or for a specific component. (likely several) to shepherd it into trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision., which includes helping build consensus about any open questions that still need to be resolved.
      • From a Performance Team point of view, we’ve not prioritized it on our roadmap because the performance benefit is theoretical at this point. If someone could show the likely performance benefit of these changes, then it would be worth putting more effort into. As an aside, I do really think WP should implement this personally, but don’t have time myself to take this on.
  • @joemcgill If we have time, I wanted to ask if we want to have a Performance Team specific table at WCUS this year? I assume yes, but wanted to confirm before letting the organizing team know.
  • @joemcgill will be leading this meeting next week

Our next chat will be held on Tuesday, August 13, 2024 at 15:00 UTC in the #core-performance channel in Slack.

#core-performance, #performance, #performance-chat, #summary

Performance Chat Summary: 30 July 2024

Meeting agenda here and the full chat log is available beginning here on Slack.

Announcements

Priority Items

  • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
    • Current release (6.7)
    • Future releases
  • Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party (and other performance plugins)
  • Active priority projects

WordPress Performance Trac Tickets

Performance Lab Plugin (and other Performance Plugins)

Active Priority Projects

Improving the calculation of image size attributes

  • @mukesh27 For Improving the calculation of image size attributes i have been working on:
    • PR #1382 – Update wp_calculate_image_sizes to Reflect Changes in sizes attribute
    • Issue #1389 – Accurate sizes improvement didn’t account for the disable filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. for sizes – Merged

Plugin Check

Open Floor

  • @adamsilverstein I have one update: my PR adding User Timing metrics for the Interactivity APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. was approved and merged: https://github.com/WordPress/gutenberg/pull/60522 this is hidden behind a debug flag until the API is stable and also only available in the plugin for now

Our next chat will be held on Tuesday, August 6, 2024 at 15:00 UTC in the #core-performance channel in Slack.

#core-performance, #performance, #performance-chat, #summary

WordPress 6.6 Performance Improvements

This post is the latest in a series of updates focused on the performance improvements of major releases (see 6.5, 6.4, 6.3, and 6.2).

On July 16, 2024, WordPress 6.6 “Dorsey” was released to the public and includes some significant performance improvements. Continuing with work from previous releases, this release delivers significant performance improvements to the editor. Template loading improved by a notable 35+% with this tracking issue capturing all blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor improvements. For the second release in a row, significant new features were added for users to customize their sites, while ensuring minimal impact on server response times.

This post summarizes the performance change since the last release in the 6.5 branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch". (6.5.5) and the 6.6 release, and then digs into the details of the most significant performance related changes.

Analysis shows that block themes (Twenty Twenty-Four was tested), experienced modest regressions in performance. The median Largest Contentful Pain (LCP) time shows a slight 7ms or 5% decline in tests, and the median Time To First Byte (TTFB) shows a 10ms (14%) decline. While some overhead typically accompanies new features, these declines point to areas where we can improve in the future.

Classic themes show a smaller regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. (Twenty Twenty-One was tested). The median Largest Contentful Pain (LCP) time shows a slight 1ms or 1% decline in tests, and the median Time To First Byte (TTFB) shows a 1.2ms (3%) decline. 

Further details on the methodology behind these measurements are provided later in this article, along with an explanation of possible regression sources.

Key changes

Priming transient and transient timeout options in `get_transient`

On sites without a persistent cache, temporary transients are stored in two options. One containing the transient itself, the other containing the timeout. In #61993 the querying of expiring transients is reduced from two to a single database request. Impact could be significant on sites running plugins that make heavy use of transients.

Obsolete polyfills dependencies have been removed

In #60962 now obsolete polyfills such as wp-polyfill, wp-polyfill-inert and regenerator-runtime were removed from the reactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. script dependency in WordPress. They are no longer needed in modern browsers supported by WordPress. Typical sites using React on the front end may see a moderate performance improvement because these scripts will no longer need loading and contend for resources other scripts might need. 

Disable autoload for large options

In #42441, autoloading for options was given more granular control. In addition, when options are added without explicitly setting an `autoload` value, WordPress will automatically skip autoloading for large options (see dev note). The goal of this change is to reduce slow database responses, sometimes caused by very large autoloaded options.

Add a “Audit Autoloaded Options” section in Site Health

#61276 adds a test under the Site Health section to monitor autoloaded options. It displays the number and size of autoloaded options. It shows a ‘good’ status if the autoloaded options are within acceptable limits but a ‘critical’ status if the autoloaded options exceed the predefined threshold (default: 800,000 bytes), indicating a potential performance issue.

Cache block theme patterns persistently

In [58025], block theme patterns caching was updated to use transients so in order to extend the performance benefits of caching these patterns to sites that are not running an external object cache. Our initial benchmarks showed that eliminating the cost of loading all of the Twenty Twenty Four theme’s block patterns on each request saved ~13% of the total server response time.

Introduce wp-on-async directive as performant directive

In Gutenberg PR 61885 a new wp-on-async directive was added to the Interactivity APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.. This ensures that when there are multiple directives for the same event, they do not add up to a long task. This is also true if a single directive itself causes a long task. It also gives the main thread time to update the UIUI User interface before running any potentially long handler code, since this directive yields to the main thread immediately before invoking the action/callback. CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. blocks including navigation, query pagination and search were all updated to use the new async callbacks in GB PR #62160. Lastly, if an action is unable to leverage wp-on-async due to needing synchronous access to the event object, the wordpress/interactivity package now exposes a splitTask() function which can be used to manually yield in the callback. See example in the documentation for Async Actions

Enable lazy-loading of post embeds

WordPress lets you embed a preview of a post into another post simply by pasting its URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org in the editor. In #58773, the resulting iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the user’s browser. is now automatically lazy loaded similar to the way other embeds are lazy loaded.

Optimizations for transients

Networknetwork (versus site, blog) transients are now primed in a single call and get_site_transient was updated to prime multiple caches at once. The wp_prime_network_option_caches function was added, saving ~3 datebase calls per page load on multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site. See #61193 and #61053.

How release performance is measured

The performance measurements used for the overview are based on benchmarks conducted using an automated workflow on GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/ action runners. Benchmarks were taken of the homepage of the Twenty Twenty-One and Twenty Twenty-Four themes with and without object caching enabled via memcached, comparing WordPress 6.6 with WordPress 6.5.5 (the latest version of WP 6.5 available when 6.6 was released).

Performance metrics were collected from 100 runs for both Core Web Vitals (CWV) and Server-Timing headers provided by the Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party using CLI scripts from the WPP Research repo.

Benchmark Data

The report data is summarized in this document

Full report data is below:

Follow up from this release

  • An issue was opened to investigate where the regressions may have come from. Current investigations point to a couple of possible regression points:
    • r57920: Options, MetaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. APIs: Use more sensible default for autoloading options.
    • r58264: Block Themes: Add section styling via extended block style variations – which is  being worked on in core.trac.wordpress.org/ticket/61451.
  • The performance team is working to improve our performance testing tools consistency and robustness, including a roadmap for performance testing next steps.
  • Performance Labs – the plugin(s) we use to test out new performance features for core – continues to add new features such as Image Prioritizer , Embed Optimizer, Speculative Loading, Performant Translations and Modern Image Formats (added AVIF and picture element support), and Enhanced Responsive Images.
  • Work on better alignment between test methodologies for Core and GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/.

Thanks to @westonruter, @joemcgill  and @annezazu and @spacedmonkey for contributing to this post.

#6-6, #core, #core-performance, #performance

Performance Chat Summary: 23 July 2024

Meeting agenda here and the full chat log is available beginning here on Slack.

Announcements

Priority Items

  • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
    • Current release (6.7)
    • Future releases
  • Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party (and other performance plugins)
    • Enhanced Responsive Images
    • Embed Optimizer
    • Image Prioritizer
    • Image Placeholders
    • Modern Image Formats
    • Optimization Detective
    • Performant Translations
    • Speculative Loading
  • Active priority projects

WordPress Performance Trac Tickets

  • There are currently 16 performance issues in 6.7
  • @pbearne I need input on this ticketticket Created for both bug reports and feature development on the bug tracker. as I made opinionated changes as to which option should not be autoloaded #61103
    • @joemcgill I plan on digging into that PR to give you feedback, but am going to be out on holiday for a bit. If anyone else has time to look at this in the mean time, please do so.
    • @mukesh27 I will take a look this week
    • @joemcgill One thing that will be good to understand, is that if we aren’t autoloading options that are only needed in the adminadmin (and super admin), how do we make sure the editor experience isn’t negatively affected. I think you’re already planning on priming all of those options in the admin, but would be good to get some performance measurements of the before/after of both the front end and admin.
    • @pbearne I have a patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. to load the admin options in back on wp_int

Performance Lab Plugin (and other Performance Plugins)

  • @mukesh27 I have been working on PRs that ready for review:
    • Performance Lab plugin:
      • PR #1374 – Autoloaded Options Health Check: Disabled options reappear in Site Health after external update
    • Modern Image Formats plugin:
      • PR #1354 – Picture element: The accurate sizes improvement for images not working
  • @westonruter It seems like we’re getting increasing reports of issues with image generation in Modern Image Formats
    • In GitHub and support forums
    • @westonruter Might be related to the issue of AVIF generation taking a very long time sometimes?
    • @joemcgill Ah, I do remember cases a long time ago where image generation could take longer than the max PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher timeout on some hosts and result in the attachment data being created in the DB while the actual image generation failed. I wonder if something like that is happening?
    • @westonruter That’s being discussed here: https://github.com/WordPress/performance/issues/371
    • @adamsilverstein this could also be a support detection issue, (where format support for AVIF gives a false negative or positive), interesting they say it falls back to WebP
    • @westonruter I wonder if the AVIF generation should be moved a background process? Use the JPEG immediately upon upload and then use the AVIF once it is available
    • @adamsilverstein we already have a way of generating images in multiple passes, but it needs to be able to process one image completely before the timeout
    • @joemcgill That’s a good idea. There is prior art for generating missing intermediate sizes that could be referenced.
    • @pbearne Idea: we need a long process control for wp-admin that can be used for any task that takes a long time (images gen, post delete, etc.)
    • @adamsilverstein https://github.com/WordPress/performance/issues/490 was part of that previous effort, there is also a trac ticket
    • @westonruter I thought that was primarily for regenerating the entire media library
    • @adamsilverstein yes, but part of that was the ability to regenerate images in i the background #6814 16 year old ticket
    • @joemcgill It’s not totally accurate anymore, after #40439
    • @adamsilverstein true, we partially solved the issue with that, as long as the user agent remains present to trigger the retries
    • @joemcgill I’ve played with using WP_Cron for this a looooooong time ago, but that can cause failures to affect end-user front-end requests, which we’d want to avoid

Active Priority Projects

Improving the calculation of image size attributes

  • @mukesh27 For Improving the calculation of image size attributes i have been working on:
    • PR #1382 – Update wp_calculate_image_sizes to Reflect Changes in sizes attribute
    • Issue #1389 – Accurate sizes improvement didn’t account for the disable filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. for sizes
    • @joemcgill I’m reviewing those this morning

Plugin Check

Open Floor

  • WordPress 6.6 performance analysis
    • @adamsilverstein Yes… I have been working on a post for 6.6 performance changes and will share a draft here for feedback soon!
    • one challenge has been identifying the source of the slight regressions we see in 6.6 (the numbers haven’t changed much since I shared results here for an RCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). a few weeks ago)
    • part of the challenges is tracking changes that originate in the GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ project and are then merged over to coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. our automated tests haven’t highlighted issues, nor are the Gutenberg performance tests
    • some ideas: it might be because the regressions are very small and spread out over a number of commits, or it might be related to the difference in how we are doing automated tests. in case, it points to an area we can improve
    • @joemcgill Agreed. There are a number of improvements that we could make to our CI infrastructure in both the GB repo and in Core that would help. We’ve already got https://github.com/WordPress/performance/issues/1380 as a place to discuss a set of improvements we want to focus on next. I’d love to see more discussion there so we can define and prioritize some next steps.
    • One of the questions that I still have is whether the benchmarks that we have been taking at the end of each release are providing us with useful info, or if they are obscuring what is really happening in the field.  @adamsilverstein I’m curious if we could get some HTTPArchive data after 6.6 has been out a while to see if our lab benchmarks relate to real user data or not.
    • @adamsilverstein that is a good point, I’m happy to work on that. we should have enough data in a few months.
    • some performance improvements we are adding will really only become apparent in the field data, and our automated testing can’t really measure those

Our next chat will be held on Tuesday, July 30, 2024 at 15:00 UTC in the #core-performance channel in Slack.

#core-performance, #performance, #performance-chat, #summary

Performance Chat Summary: 16 July 2024

Meeting agenda here and the full chat log is available beginning here on Slack.

Announcements

  • Welcome to our new members of #core-performance
  • Version 3.3.0 of Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party was released yesterday
  • WordPress 6.6 release happening today Tue Jul 16

Priority Items

  • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
    • Current release
    • Future release
  • Performance Lab plugin (and other performance plugins)
    • Enhanced Responsive Images
    • Embed Optimizer
    • Image Prioritizer
    • Image Placeholders
    • Modern Image Formats
    • Optimization Detective
    • Performant Translations
    • Speculative Loading
  • Active priority projects

WordPress Performance Trac Tickets

  • @joemcgill For visibility: on Friday, I reverted r58334 due to a late reported bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. related to the caching global styles for blocks. This was done as part of #59595. I have a PR that I need to refresh that fixes the issue and reinstates the cache, which I hope to have included in 6.6.1.
  • There are currently 12 performance issues in 6.7 which will be reviewed in tomorrow’s bug scrub

Performance Lab Plugin (and other Performance Plugins)

  • @mukesh27 I have also opened an issue for the Picture element: The accurate sizes improvement for images not working #1349. The new changes from the Enhanced Responsive Images (formerly known as auto-sizes) plugin are not working
    • @westonruter let’s prioritize fixing those and push out short-cycle standalone releases
    • @mukesh27 confirmed it’s Modern Image formats plugin causing the bug and will share more details on issue

Active Priority Projects

Improving the calculation of image size attributes

  • @joemcgill now that we’ve released the first version of Auto-sizes Enhanced Responsive Images that includes those improvements, I think @mukesh27 and I will need to update the overview issue with the main goals for the next priority features. At the same time, we’ll continually iterate on issues that come up during testing.

Improved template loading

  • @joemcgill There were a couple of remaining tasks open on the Improved template loading epic, but at this point, we’ve accomplished the majority of what was originally planned and the remaining items really are iterative improvements to the WP_Theme_JSON system that really could be tracked as part of ongoing CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. work, or as a collaborative issue in the GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ repo, so I’m going to close up the related tickets and close that issue.
  • This section will be dropped from the agenda moving forwards

Plugin Check

Open Floor

  • @swissspidy I opened a proposal a while ago for a new PL plugin: https://github.com/WordPress/performance/issues/1324 The idea is to take data collected by Optimization Detective and display them in a nice little dashboard. Not sure yet how useful that would be, but thought I’d share it 🙂
    • @joemcgill I love this idea and wonder if there is an opportunity to surface other kinds of performance data on that dashboard, like CWV scores if available, etc. Though I really like the different use cases we’re finding for the Optimization Detective APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.. “CWV scores if available” meaning from the CrUX API
      • @westonruter I suppose to compare with the CWV metrics from actual visitors as measured by Optimization Detective?
    • @westonruter Yeah, actually storing the CWV metrics in the URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org Metrics custom post typeCustom Post Type WordPress can hold and display many different types of content. A single item of such a content is generally called a post, although post is also a specific post type. Custom Post Types gives your site the ability to have templated posts, to simplify the concept. would be a key part of this. Currently we only store which element was the LCP, not what the LCP metric is.
    • @joemcgill Unless we’re collecting metrics from every visit, I think we’d need to somehow be clear about how those CWV metrics are representative of real users, and not a full picture.
    • @westonruter Yeah. It would be a sampling, for sure. But so is CrUX. Although surely CrUX sampling would be higher, assuming you get enough traffic to qualify
    • @joemcgill It is, but CrUX is a larger sample size than what we’re collecting with OD. The real value is that this would allow sites to get URL level data which can be more difficult for site owners to get from CrUX
    • @swissspidy There was also a proposal to use a separate storage mechanism (e.g. a custom table or CPT) that allows storing the data for more than 30 days
    • @swissspidy Precisely. And also without waiting for next month’s data to arrive etc. You could more quickly see the performance impact of changes made to the site.
    • @joemcgill Rather than making this a separate plugin, I really think we should consider adding this type of data to Performance Lab and integrate OD when available (or bundle the API into that plugin too). Now that all of our Performance features are unbundled into standalone plugins, I think there’s an opportunity for PL to add more value as a tool for collecting and surfacing performance metrics and opportunities for improvement to site owners.
  • @swissspidy Another quick update from my side: I had some very productive discussions with some Gutenberg folks about client-side media processing and they shared some valuable feedback about separation of concerns. I am currently refactoring my Media Experiments plugin based on that feedback, hoping to have something that can be merged into Gutenberg afterwards. The tracking issue on the Gutenberg repo is this one: https://github.com/WordPress/gutenberg/issues/61447

Our next chat will be held on Tuesday, July 23, 2024 at 15:00 UTC in the #core-performance channel in Slack.

#core-performance, #performance, #performance-chat, #summary

Performance Chat Summary: 9 July 2024

Meeting agenda here and the full chat log is available beginning here on Slack.

Announcements

  • Welcome to our new members of #core-performance
  • The next Performance Lab release will take place on Mon Jul 15, see https://github.com/WordPress/performance/milestones
  • WordPress 6.6 RCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). 3 happening today, ahead of the main release scheduled for Tue Jul 16

Priority Items

  • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
    • Current release (WP 6.6)
    • Future release
  • Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party (and other performance plugins)
    • Auto-Sizes for Lazy-Loaded Images
    • Embed Optimizer
    • Image Prioritizer
    • Image Placeholders
    • Modern Image Formats
    • Optimization Detective
    • Performant Translations
    • Speculative Loading
  • Active priority projects

WordPress Performance Trac Tickets

Performance Lab Plugin (and other Performance Plugins)

  • @westonruter For Embed Optimizer, this PR will be ready for review this morning. I just need to add the description to detail the changes: https://github.com/WordPress/performance/pull/1302
    • This includes fundamental enhancements to Optimization Detective to make it much more powerful to be able to make optimizations to a document (e.g. what Embed Optimizer requires)
  • @westonruter I think the plugin with the most need is Modern Image Formats as there are a couple bugs needing to be fixed: https://github.com/WordPress/performance/milestone/59
  • @mukesh27 the updated sizes feature from auto-sizes is ready for this release, some final PRs ready for review:
    • PR #1335 – Plugin rename
    • PR #1329 – Merge feature branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch". to trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision.
  • @joemcgill there’s also a proposed name change for the Auto-Sizes plugin

Active Priority Projects

Improving the calculation of image size attributes

  • Discussed above

Improved template loading

  • @joemcgill The template loading work is mainly wrapped up in 6.6. There are a few minor follow-up issues that I think we’ll continue to track but I’ll work on summarizing next steps and closing up those GH issues.
    • The two things that are on my mind in the short term are:
      • Supporting the Plugin Check project as the Plugin Review team are working to get it integrated into their systems.
      • Improving our performance metrics for both CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. and GB.

Plugin Check

  • @joemcgill For Plugin Check, I’d like to get more eyes on this conversation., which may end up being a requirement for them to do the integration

Open Floor

  • @mukesh27 Do we have any open issue for Improving our performance metrics for both Core and GB 
  • @joemcgill raised that @swissspidy mentioned one last week that included both misc improvements and shared performance tooling and asked about whether we should separate these issues https://github.com/WordPress/performance/issues/1093
    • I do think it would serve us well to put some focus on this early in the 6.7 cycle so we can more easily pinpoint which commits have server timing performance implications. That’s been a big challenge the past 2 releases. (In the GB repo specifically)
  • @pbearne I am thinking of suggesting that WP has an infrastructure release where we update/re-organize the PHPUnit tests etc. as without core committers actively making the changes it will never get done. The performance testing could be part of this
    • @joemcgill I would suggest proposing the infrastructure changes you have in mind and whether those become a release focus or not, could be secondary.

Our next chat will be held on Tuesday, July 16, 2024 at 15:00 UTC in the #core-performance channel in Slack.

#core-performance, #performance, #performance-chat, #summary