Performance Chat Summary: 5 September 2023
Meeting agenda here and the full chat log is available beginning here on Slack.
Announcements
- Welcome to our new members of #core-performance
- Call for Testing post to request folks to test the new Performant Translations plugin
Priority Projects
Server Response Time
Contributors: @joemcgill @spacedmonkey @aristath @swissspidy
- @spacedmonkey
- Ready for review
- Working on
- I would love eyes on #59279
- @thekt12 does this also relate to https://core.trac.wordpress.org/ticket/18298
- @mukesh27 I’ve worked on ticket #22192, and I’ve raised PR 5139, which is now ready for review.
- @joemcgill The primary opportunities for addressing server timing improvements we identified during the 6.3 cycle were either addressed during that release, or are already in progress in this release milestone. We have a lot in progress right now, so I’m keen to see how we can work together to get a lot of the open tickets wrapped up so we’re not crunched later in the cycle.
- I’ve been looking into opportunities to improve template loading/rendering and plan to identify a few tickets to pull in related to that work later this week.
- One of the biggest issues that I’ve run into relates to resolving/caching Theme.json data (related ticket)—which can affect any theme that supports some aspect of theme.json (not just block themes). We’ve tried working around this issue over the past few releases through various caching strategies, but trying to resolve the underlying issue would likely make the most impact.
- @spacedmonkey I approved this – https://github.com/WordPress/wordpress-develop/pull/5112
- @joemcgill We’ve decided to go with the other approach. So it would be good to get your eyes on that one instead
- @thekt12 I am working on – https://core.trac.wordpress.org/ticket/18298 I am currently testing out performance of this CONSTANT vs GLOBAL vs FUNCTION.
Database Optimization
Contributors: @aristath @spacedmonkey @olliejones
- @spacedmonkey
- Ready for review
- Committed
- Ready to commit – I would love some eyes on this before I commit.
https://core.trac.wordpress.org/ticket/54221
- @flixos90 I committed https://core.trac.wordpress.org/changeset/56508 end of last week
JavaScript & CSS
Contributors: @mukesh27 @10upsimon @adamsilverstein @westonruter
- @westonruter In continuation of the work on script loading strategies, I picked up #58664 to eliminate manual construction of script tags. This doesn’t strictly relate to performance now, but it does to security.
- @spacedmonkey Related – https://core.trac.wordpress.org/ticket/58775
- @westonruter Anyway, I left a comment in #core-js asking for feedback on an approach to migrate existing inline tags (primarily in the admin). The scope of the ticket may need to be pulled back to omit wp-admin. But the big security win with this is to be able to apply Strict CSP to WordPress sites, making persistent XSS much less of a possibility. Feedback on PR and ticket welcome
Images
Contributors: @flixos90 @thekt12 @adamsilverstein @joemcgill
- @spacedmonkey Ready for review https://core.trac.wordpress.org/ticket/58675 / https://github.com/WordPress/wordpress-develop/pull/4797/
- @pereirinha I pushed an update earlier for https://core.trac.wordpress.org/ticket/58892 that hopefully is in the right direction. There’s still one outstanding issue that I could use @flixos90 @joemcgill @mukesh27 inputs
- @pereirinha I’ll shift gears into https://core.trac.wordpress.org/ticket/58893 which should be simpler and I’m expecting to have a PR ready this week
Measurement
Contributors: @adamsilverstein @joemcgill @mukesh27 @swissspidy
- No updates this week
Ecosystem Tools
Contributors: @mukesh27 @swissspidy @westonruter
- No updates this week
Creating Standalone Plugins
Contributors: @flixos90 @mukesh27 @10upsimon
- @10upsimon Going to proceed with https://github.com/WordPress/performance/issues/651 (although pointing out that req are incorrectly added to https://github.com/WordPress/performance/issues/652)
- In agreement with @flixos90 on next steps, which is to port as much as possible form
updates.js
and use as much DOM structure as possible from existing Plugins > Add UI screen in a bid to make the implementation as simple as possible. I’ll move req and comments over to the correct issue (651)
Open Floor
- @spacedmonkey What is the major performance focus of WP 6.4?
- @joemcgill I don’t see us having any particular high-level goal for this release, in terms of new features, but more a continuation of working through our roadmap, so all of the things people just mentioned during this meeting
- I do think it would be useful to make sure we’re involved earlier in testing out and giving performance feedback to any new functionality being developed in the Gutenberg plugin that is intended to land in 6.4
- @spacedmonkey I would like to work on limiting file i/o. There is lots of low hanging fruit there.
- @10upsimon curious to know if you have any analysis on this, in terms of where you see opportunity? I’d love to see it (even at a later stage) as this has bene something I’ve simply passed in thought a few times in the years. I’m also curious of things like the effects said savings will have in different FS type environments (if at all) etc. Will keep eye’s open on this topic.
- @spacedmonkey If you look at xhprof, there are the most expensive functions. glob, realpath, file_exists and file_get_contents are all file I/O
- @joemcgill One of the conflicting questions that is still unresolved here is whether individual calls to those functions have a consistent performance impact over time, or if PHPs internal caching of these function end up making them less expensive than it seems when doing an individual profile run. Some testing about that would be instructive
- @spacedmonkey I have performance data on – https://core.trac.wordpress.org/ticket/59279 I understand there are caches, so calling the same file i/o twice isnt that bad, I am trying to avoid completely unnessarly calls all together.
- @joemcgill Agreed. That’s been a big part of what I’ve been looking into for loading templates as well.
- @10upsimon I’d be curious to know which of these have caching (natively) as I was under the impression most IO functions did not, so even if the function itself got cached, there is still the physical i/o process. So an unnecessary i/o process seems to indeed be a good starting point here
Our next chat will be held on Tuesday, September 12, 2023 at 15:00 UTC in the #core-performance channel in Slack.