Switch from central list to per-url hash. This removes the need to know about and remember updating a central list. I noticed one file missing already, namely the typesense-minibar.js file.
This slightly improves cache use by not invalidating them all together.
The filemtime timestamp values are so short that an MD5 hash of three filemtime() values is actually longer than just the three numbers concatenated. This means we lack the benefit a hash usually provides, which is that you get exposure to high entropy input in a format shorter than that same input.
Switch from mtime (or mtime-hash) to content-hash. This has a few benefits:
Note that Git does not track modified times. Instead, mtime is whenever a git clone, checkout or pull last created or modified the file locally on that server. For example, if you git checkout OLD and then back to git checkout main, the files get a newer mtime. This is what happens by default at the OS level. Git isn't setting these mtime values.
This means the URL ends up alternating depending on which server (e.g. wp-04 and wp-05) last generated the page. It also means different pages on the site may have a different URLs for the same asset, thus making ineffective use of caching. If the site was statically generated in CI, it would bump the cache after every commit instead of only when that file has changed, because in CI the "git clone" woulld create/modify all files at that time.
It is the same between local, staging, and production, which might ease debugging in some cases.
It allows continuing and re-using old browser (and CDN) caches if a commit is rolled back for some reason, since it would literally be the same content and thus URL again.
Switch from central list to per-url hash. This removes the need to know about and remember updating a central list. I noticed one file missing already, namely the typesense-minibar.js file.
This slightly improves cache use by not invalidating them all together.
The filemtime timestamp values are so short that an MD5 hash of three filemtime() values is actually longer than just the three numbers concatenated. This means we lack the benefit a hash usually provides, which is that you get exposure to high entropy input in a format shorter than that same input.
Switch from mtime (or mtime-hash) to content-hash. This has a few benefits:
git clone
,checkout
orpull
last created or modified the file locally on that server. For example, if yougit checkout OLD
and then back togit checkout main
, the files get a newer mtime. This is what happens by default at the OS level. Git isn't setting these mtime values.This means the URL ends up alternating depending on which server (e.g. wp-04 and wp-05) last generated the page. It also means different pages on the site may have a different URLs for the same asset, thus making ineffective use of caching. If the site was statically generated in CI, it would bump the cache after every commit instead of only when that file has changed, because in CI the "git clone" woulld create/modify all files at that time.
It is the same between local, staging, and production, which might ease debugging in some cases.
It allows continuing and re-using old browser (and CDN) caches if a commit is rolled back for some reason, since it would literally be the same content and thus URL again.
Follows-up 2015fcb936720c94d5067e6d1db00277965db9e3.
Ref https://github.com/jquery/jquery-wp-content/issues/469 Ref https://github.com/jquery/jquery-wp-content/pull/468