ConfigBox's static assets as well as static content from product data can be served with far future headers and cache invalidation can be handled with the application.
Application assets: each application asset (stylesheets, JavaScript, images) have a cache-busting query string. The value changes with each release version.
Assets from product data: Changes to static assets (product images etc) trigger a rename of the uploaded file.
Assets from customizations: Implemented by way of cache-busting. Developers need to implement a specific function (see below at 'Implementing cache busting for customization assets'
Apache
.htaccess files are placed where needed out of the box. These set Cache-Control to 'public' and end Expires to 1 year ahead from access time.
Be sure to have the modules mod_headers and mod_expires enabled.
nginx
Set cache headers for these locations
{store data folder}/public
{customer data folder}/public
Create a PHP file in {customization folder}/system_overrides/releaseNumber.php (or pick any other file name)
Add a function called getReleaseNumber(), have it return a string of your choosing
Change it whenever you need to invalidate your static assets.