Performance Chat Summary: 7 November 2023

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


Priority Projects

Server Response Time

Link to roadmap projects and link to the GitHub project board

Contributors: @joemcgill @swissspidy @thekt12 @mukesh27 @pereirinha

  • @thekt12 working on #59314 Research showed that there is very little benefit going ahead with file_exists caching and it’s not easy to cache locate_block_template()
    • @joemcgill I think we can probably close #59314 as a wontfix as well, but was waiting to see what the results were of the research you were doing into replacing all of the file_exists checks in coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. with your PoC. Did you ever run any numbers for that?
    • @thekt12 ran into issues while doing it so stopped in between. Will try that again this week
    • @joemcgill Sounds good. I think I’ll close that ticketticket Created for both bug reports and feature development on the bug tracker. regardless, and if you notice that it’s worth attempting to replace the native file_exists implementation then we can open a new ticket for that.
  • @thekt12 also reviewing #45601
  • @mukesh27 For #59315 I ran function benchmark, which indicated a ~3% performance improvement for the function. Given this result, we recommend closing this ticket with a wontfix resolution
  • @swissspidy Regarding i18ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill. performance, still planning a blogblog (versus network, site) post after 6.4 is out

Database Optimization

Link to roadmap projects and link to the GitHub project board

Contributors: @mukesh27 @thekt12

  • @mukesh27 for #56912 we are waiting for @spacedmonkey feedback
    • @spacedmonkey suggest to keep it open and puntpunt Contributors sometimes use the verb "punt" when talking about a ticket. This means it is being pushed out to a future release. This typically occurs for lower priority tickets near the end of the release cycle that don't "make the cut." In this is colloquial usage of the word, it means to delay or equivocate. (It also describes a play in American football where a team essentially passes up on an opportunity, hoping to put themselves in a better position later to try again.) to a future release
    • @flixos90 I’m not sure about the site_icon option. I reviewed that when I looked at the ticket recently, and it’s autoloaded as far as I can tell. That’s why I am thinking there is no outstanding work to do
  • @thekt12 This was already ready during 6.4, I feel this is ready to be merged for 6.5 given a second review. It’s a small 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. fix
    • @joemcgill I can give it a fresh look and commit it if it looks good to go

JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. & CSSCSS Cascading Style Sheets.

Link to roadmap project and link to the GitHub project board

Contributors: @mukesh27 @10upsimon @westonruter

  • @joemcgill The project board still has this leftover effort for async/defer, which includes #59301. I assume that’s not something actively being worked on?


Link to roadmap projects and link to the GitHub project board

Contributors: @flixos90 @thekt12 @adamsilverstein @joemcgill @pereirinha @westonruter

  • @westonruter For Image Loading Optimization (overview issue), the initial pull request for LCP and lazy-loading detection (i.e. page metrics) has been merged into the 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". (feature/image-loading-optimization). I’m working on the next pull request for page metrics storage which I hope to have ready for review by EOD today. With detection and storage in place, I’ll move on to applying them to actually apply the optimizations on pages.
    • @joemcgill One question I had about 878 is why you decided to register a separate post type for the storage, rather than post 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.? Just curious, really.
    • @westonruter Good question. The reason is that URLs needing to be optimized are more than just singular posts, where postmeta is not available. It’s similar to oEmbed Caches in core, where we have a 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. for that as well
  • @joemcgill On a separate topic, I’ve started some initial research into ways we might be able to improve the accuracy of the algorithm we use to determine the sizes attribute that core adds to images. This could be an important optimization if we can be more accurate and potentially avoid serving larger than necessary images to site visitors.
  • @westonruter On the previous topic…which relates to this, the detection logic is capturing the bounding rect for each image in the viewport, so this could feed into the sizes calculation.
    • @joemcgill Oh sure…if we could do front-end calculation of the image dimensions, the sizes attribute could be much more accurate.
  • @pbearne Added Backgrounds to images got a plug by Kevin Powell


Link to roadmap projects and link to the GitHub project board

Contributors: @adamsilverstein @joemcgill @mukesh27 @swissspidy @flixos90

  • @swissspidy My intro blog post about performance testing should be ready soon, just needs some final polish
  • @swissspidy Opened a PR to expand core performance tests to cover localized sites, wp-adminadmin (and super admin), and memory usage
  • @adamsilverstein One small update from Drupal land where they have been working on a similar effort to add automated performance testing… They recently landed their first test collection piece in core with data going to Grafana –
  • @flixos90 I am looking at metrics (mostly field) a lot these days, for visibility I am resharing the TTFB impact analysis I conducted:
    It begs the question how much WordPress core is in a position to affect TTFB in the field, vs how much TTFB is impacted by other factors outside of our control (e.g. hosting stack, networknetwork (versus site, blog) connection etc.)
  • @joemcgill I’ve spent a lot of time over the past week getting into the weeds of how we’ve been benchmarking WP versions, in preparation for the 6.4 release. It’s been a helpful exploration and we’ve made improvements to the workflow and added the ability to add variance statistics to the benchmarks taken by our benchmark CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. tools. I’ll write up some more details and add them to the conversation in
  • @flixos90 I am also researching a couple other things related to our team’s potential impact on CWV through LCP, e.g. given we have mostly spent time on improving LCP, how much would that allow us to improve overall CWV passing rate of WordPress sites? And the same for TTFB (which, spoiler alert, seems to be a major bottleneck for TTFB)
    • @flixos90 I am going to prepare some of those stats to be a bit more presentable, but from what I am seeing so far, it seems that improving TTFB by let’s say 40% (which obviously is a very ambitious goal) would improve the actual LCP passing rate from the current ~40% to ~60%, which would be huge. Note that ~60% is also the current LCP passing rate of all non-WordPress sites in the HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. Archive / CrUX dataset. So is TTFB our main issue in WordPress?
    • @flixos90 It would certainly make sense, since TTFB is the metric with the lowest passing rate for WordPress sites. So this probably isn’t even news, but I think it’s a good other angle to look at the situation from. Improving TTFB would have major impact on LCP, and that would then have major impact on CWV. But easier said than done

Ecosystem Tools

Link to roadmap projects and link to the GitHub repo

Contributors: @mukesh27 @swissspidy @westonruter

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27 @10upsimon

Open Floor

  • @pbearne I was  on a client site last week and noticed that there was a load of get_options calls to missing options each taking 0.002. I wonder if we could work out a way to return early
    • @joemcgill Do these not get picked up by the not_options cache? Or did that not apply in this case?
    • @pbearne didn’t seem to be so, filled up the queries
    • @joemcgill get_option should add any not found option to the cache here, unless there is a bug that causes it to get skipped. If the site isn’t using a persistent object cache and it’s only called once, then that optimization won’t really matter, but otherwise it should.
  • @dmsnell I started working with someone to work on running 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. E2E suite against the Playground with Core’s trunk. My schedule was a bit off because of a meetupMeetup All local/regional gatherings that are officially a part of the WordPress world but are not WordCamps are organized through A meetup is typically a chance for local WordPress users to get together and share new ideas and seek help from one another. Searching for ‘WordPress’ on will help you find options in your area. we had a couple weeks ago and a small vacation I took afterwards.

Our next chat will be held on Tuesday, November 14, 2023 at 16:00 UTC in the #core-performance channel in Slack.

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