To improve performance, Commerce sets the
Expires header on a static resource tells the browser to cache the resource at that URL and serve the cached version until it expires.
This is a common best practice for caching static resources.
When the browser caches a static resource and that resource changes on the server, you must clear the browser cache so it can download the new version.
Manually clearing the browser cache works if you are a website administrator, but this is not an appropriate request to make of your users when you want them to download new versions of a static resource.
Static content signing is a Commerce feature that allows you to invalidate the browser cache for static resources.
Commerce accomplishes this by adding a deployment version to the URL of static files.
The following is an example of a URL signed with a version:
When you run the command
setup:static-content:deploy to deploy static content, Commerce automatically changes the deployment version.
This changes the URL of the static files and forces the browser to load the new version of the files.
Commerce enables this feature by default, and Adobe recommends keeping this feature enabled to prevent issues related to browsers serving up old static resources.
The configuration for static content signing is in Stores > Settings > Configuration > Advanced > Developer > Static Files Settings.
Determine the status:
bin/magento config:show dev/static/sign
Enable or disable static content signing:
bin/magento config:set dev/static/sign <value>
<value> is 1 (enabled) or 0 (disabled).
Commerce appends the version signature as a path component directly after the base URL of static view files to preserve the integrity of relative URLs across static resources.
This also forces the browser to resolve a relative URL to the correct signed source while keeping its content independent of the presence/absence of the signature value.
When a browser requests a signed source from the server, the server uses URL rewrites to strip the signature component from the URL.
After upgrading or modifying static resources, you must run the
setup:static-content:deploy command to deploy the version and update the static contents, which forces the browser to load the updated resources.
If you deploy code on a separate server and move it to production using a code repository to reduce downtime, you also must add the file
pub/static/deployed_version.txt to the repository.
This file contains the new version for the deployed static content.