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 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

Priority Projects

Server Response Time

Link to roadmap projects

Contributors: @joemcgill @spacedmonkey @aristath @swissspidy

  • @spacedmonkey
  • @mukesh27 I’ve worked on ticketticket Created for both bug reports and feature development on the bug tracker. #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.jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. data (related ticket)—which can affect any theme that supports some aspect of theme.json (not just 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. 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

Link to roadmap projects

Contributors: @aristath @spacedmonkey @olliejones

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. https://www.javascript.com/. & CSSCSS Cascading Style Sheets.

Link to roadmap project

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 adminadmin (and super 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

Link to roadmap projects

Contributors: @flixos90 @thekt12 @adamsilverstein @joemcgill

Measurement

Link to roadmap projects

Contributors: @adamsilverstein @joemcgill @mukesh27 @swissspidy

  • No updates this week

Ecosystem Tools

Link to roadmap projects

Contributors: @mukesh27 @swissspidy @westonruter

  • No updates this week

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27 @10upsimon

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 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/ 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.

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