Improve serving of prehashed assets #717
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
See rails/jsbundling-rails#21 and rails/jsbundling-rails#15 for motivation. Also builds on the work in #714.
Given an already digested asset
chunk-9ad2e0aa4f0e481dfc8eaa4dc850eab8.js
, we want to make sure that Sprockets can serve this file.There are currently two problems that needs to be resolved:
Sprockets::Server
will currently try to lookupchunk.js
when accessingchunk-9ad2e0aa4f0e481dfc8eaa4dc850eab8.js
Sprockets::Server
expects ETags of assets and digests to be the same, but that cannot be predicted as the hashing algorithm and version configured in the Rails application will not match whatever configuration the upstream build process used to digest the file.Sprockets::Server
is now changed so that if it fails to findchunk.js
, it will instead try and loadchunk-9ad2e0aa4f0e481dfc8eaa4dc850eab8.js
.fingerprint
will be hijacked and replaced byAsset#etag
so the ETag header behavior is consistent with other assets served by sprockets.