[wp-trac] [WordPress Trac] #59111: A stale register_core_block_style_handles cache can cause styles not to load
WordPress Trac
noreply at wordpress.org
Wed Aug 23 09:06:06 UTC 2023
#59111: A stale register_core_block_style_handles cache can cause styles not to
load
--------------------------+--------------------------
Reporter: joemcgill | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: 6.4
Component: Themes | Version: 6.3
Severity: major | Resolution:
Keywords: has-patch | Focuses: performance
--------------------------+--------------------------
Description changed by mukesh27:
Old description:
> In [56044], a transient caching strategy was added to
> `register_core_block_style_handles` to avoid expensive file operations
> for core block styles. However, this can cause styles for blocks to not
> get registered if the normalized path for those assets change after the
> transient is saved.
>
> To reproduce with the Twenty Twenty-three theme:
>
> 1. Make sure the transient is deleted: `npm run env:cli wp transient
> delete wp_core_block_css_files`
> 2. Make sure `WP_DEVELOPMENT_MODE` is not set to 'core'
> 3. Set `LOCAL_DIR=src` in `.env`
> 4. Build and start the environment `npm run build:develop && npm run
> env:start`
> 5. Load the homepage in your browser (styles should all be loaded)
> 6. Set `LOCAL_DIR=build` in `env` to switch to the build folder
> 7. Build and restart the environment `npm run build && npm run
> env:restart`
> 8. Refresh the homepage in your browser and see styles for the navigation
> block is not loaded
> 9. Set `WP_DEVELOPMENT_MODE` to `core` to see that the problem goes away.
>
> A few options to consider here:
>
> 1. We could skip the transient if we determine the site is running in any
> development mode, not just core.
> 2. Rewrite the `in_array` check for relative paths based on the blocks
> directory, rather than the full normalized file path
New description:
In [56044], a transient caching strategy was added to
`register_core_block_style_handles` to avoid expensive file operations for
core block styles. However, this can cause styles for blocks to not get
registered if the normalized path for those assets change after the
transient is saved.
To reproduce with the Twenty Twenty-three theme:
1. Make sure the transient is deleted: `npm run env:cli wp transient
delete wp_core_block_css_files`
2. Make sure `WP_DEVELOPMENT_MODE` is not set to 'core'
3. Set `LOCAL_DIR=src` in `.env`
4. Build and start the environment `npm run build:dev && npm run
env:start`
5. Load the homepage in your browser (styles should all be loaded)
6. Set `LOCAL_DIR=build` in `env` to switch to the build folder
7. Build and restart the environment `npm run build && npm run
env:restart`
8. Refresh the homepage in your browser and see styles for the navigation
block is not loaded
9. Set `WP_DEVELOPMENT_MODE` to `core` to see that the problem goes away.
A few options to consider here:
1. We could skip the transient if we determine the site is running in any
development mode, not just core.
2. Rewrite the `in_array` check for relative paths based on the blocks
directory, rather than the full normalized file path
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/59111#comment:8>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list