Requirements:
- Assets are accessed unfingerprinted (e.g.
/assets/application.js
) - Rack::Cache is enabled
- Assets are gzipped
- Assets are precompiled
- Assets are sent to the browser when updated in source control / the filesystem
This is not as easy as it sounds. By default, when rack cache is enabled, files requested from the filesystem via Rack::Static
are cached, and therefore when the file changes, those changes are not reflected in the cache, and stale assets are served up.