[wp-trac] [WordPress Trac] #43825: Style/script loading infrastructure: Etag header as a hash of script/style handles and their corresponding versions

WordPress Trac noreply at wordpress.org
Sat Apr 21 08:27:55 UTC 2018


#43825: Style/script loading infrastructure: Etag header as a hash of script/style
handles and their corresponding versions
----------------------------+-----------------------------
 Reporter:  kanishk.dudeja  |      Owner:  (none)
     Type:  enhancement     |     Status:  new
 Priority:  normal          |  Milestone:  Awaiting Review
Component:  Script Loader   |    Version:  trunk
 Severity:  normal          |   Keywords:
  Focuses:                  |
----------------------------+-----------------------------
 We've been exploring on how to bundle styles and scripts together for
 different block types in Gutenberg
 (https://github.com/WordPress/gutenberg/pull/6087#issuecomment-382888928)

 It looks like the inbuilt infrastructure for concatenating and bundling
 assets (load-styles.php and load-scripts.php) might be a good fit for
 bundling assets in Gutenberg.

 However, it looks like we will run into an issue with this approach. load-
 styles.php and load-scripts.php use the current WordPress version as the
 value of the Etag header. So if a plugin/theme developer modifies some CSS
 / JS for their block type, the browser will not attempt to fetch the
 latest content since the value of the Etag header will remain the same
 (since the WordPress version will remain the same).

 We can add some functionality in load-styles.php and load-scripts.php to
 support this:

 **Specify the value of the Etag header as a hash of the script/style
 handles and their corresponding versions.**

 So, if we get a request to load styles for paragraph and image block like
 this:

 > /load-styles.php?load=core-paragraph-block,core-image-block

 We can generate the Etag like this:

 > etag = hash_function( 'core-paragraph-block-v1.1-core-image-block-v8.3')

 and supply this value in the Etag header in the response to the browser.

 This will make sure that the next time the plugin/theme developer changes
 the CSS / JS for a block type (meaning changes the version of the
 script/style handle), the hash function will automatically generate a new
 value for the Etag header and the browser will therefore fetch the latest
 style / script bundle.

 **We can add this functionality in load-styles.php and load-scripts.php as
 an add-on to the current functionality (to preserve backward
 compatibility).**

 Maybe, this new functionality can be triggered if a specific URL parameter
 is included in the request to load-styles.php / load-scripts.php. Maybe,
 something like: /load-styles.php?etag=content_hash.

 Do you think we can go ahead with this approach? If yes, I can propose a
 patch for adding this functionality.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/43825>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list