This update reduces the time TSF spends building the SEO Bar, preparing Quick Edit data, and cleaning up titles and descriptions. The character counter now responds to Space as well as Enter. We also fixed a PHP warning when determining the Twitter Card type for archives without editable SEO settings.
In our benchmark, TSF adds 21% less time to the All Pages screen and 11.7% less to a static homepage. The estimated time TSF 5.2.1 adds to the median response time is under 1 ms on every public route we tested.
- 0.7 ms for a single page.
- 0.9 ms for a single post.
- 0.6 ms for search results.
- 0.6 ms for a blog homepage.
- 0.7 ms for a static homepage.
- 0.6 ms for a 404 page.
- 0.4 ms for the site’s main posts RSS feed.
TSF is the first full-featured sub-millisecond SEO plugin.
We compared median HTTP response times for 5.2.0 and 5.2.1 on matched WordPress 7.1.3 installs on an Apple M4 Mac mini, with OPcache on and profiling off. We estimated the time TSF adds by subtracting the median response time of matched WordPress-only installs.
- The full response takes 3.8% less time on the All Pages screen with 20 pages, where TSF adds 21.2% less time.
- The full response takes 1.1% less time on the All Posts screen with 20 posts, where TSF adds 7.9% less time.
Detailed log
For everyone
- Improved:
- TSF now normalizes tabs, line breaks, and non-breaking spaces in titles and descriptions in one pass. In isolated tests, the sanitizer processes titles 6.7% faster and descriptions 7.2% faster at the median. Both WordPress admin and public pages use this routine.
- TSF now reuses results when generating robots directives, simplifies Quick Edit data escaping, and escapes each distinct SEO Bar symbol once per request. In a separate WordPress 7.2 beta test with 100 posts on the All Posts screen, TSF’s median time to render the SEO Bar and Quick Edit columns drops from 17.704 ms to 17.230 ms (2.7% less time).
- TSF now uses a simpler replacement for text without non-ASCII spaces. In tests on short strings with repeated ordinary spaces, the routine runs over 60% faster at the median.
- TSF now uses simpler cache keys to look up values it has already computed during a request.
- You can now press Space as well as Enter to change the character counter type. Screen readers identify the counter control as a button.
- Fixed:
- Resolved a PHP warning when TSF determines the Twitter Card type for an archive without editable SEO settings.
For developers
- PHP API notes:
- Improved:
The_SEO_Framework\Meta\Title::get_addition()(tsf()->title()->get_addition()) now memoizes its return value for the duration of the request.
- Changed:
The_SEO_Framework\memo()now identifies callers by class and function and requires a named function or method caller. Closures must useThe_SEO_Framework\umemo()with an explicit key.The_SEO_Framework\Admin\Notice::generate_notice()(tsf()->admin()->notice()->generate_notice()) now outputs the dismiss control as a button.The_SEO_Framework\Admin\Settings\Layout\Form::output_character_counter_wrap()(tsf()->admin()->layout()->form()->output_character_counter_wrap()) now outputs the count as a button.The_SEO_Framework\Helper\Query\Cache::memo()(tsf()->query()->cache()->memo()) now requires a caller frame. It uses the caller’s function name as its cache key.
- Improved: