-
-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for ETag-based caching #56
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Awesome, thanks! Can you add this into |
When providing an ETag header on responses, the client automatically sends that header value on subsequent requests for the matching resource as an `If-None-Match` request header. If the ETag value received in `If-None-Match` is the same as the ETag computed by the disk crawl, a 304 "Not Modified" status can be returned along with an empty body to indicate that the requestor's cached value should be used.
@lukeed fixed! |
lukeed
approved these changes
May 4, 2020
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you 🙏 Little embarrassed I added ETag w/o its counterpart haha
Available as:
|
lukeed
added a commit
that referenced
this pull request
Jun 10, 2020
* chore(sirv): bump “@polka/url” for better decoding * feat(sirv): inline `opts.single` behavior * fix(sirv): unknown Content-Type as empty string * feat(sirv-cli): run HTTP/2 server behind flags * chore(sirv-cli): update readme * feat: run `sade` in single-command mode * feat(sirv): allow `--single` to accept path; - Closes #35 * fix(sirv): respect existing `Content-Type` header; - Closes #38 - Closes #39 * fix(sirv-cli): use "-K" for `--http2` alias * feat: allow precompiled gzip & brotli files; - Closes #3 * refactor(sirv): consolidate "dev & prod" modes; - still optimized - adds ETag support to "dev" mode - adds brotli/gzip support to "dev" mode - Related: #3 * chore: bump devdeps * v1.0.0-next.0 * chore(docs): fix Polka demo usage; - Closes #42 * fix(sirv): set "no-store" during `dev` mode; - Closes #45 * v1.0.0-next.1 * fix(sirv): extract `list` into package * fix(sirv): ignore deeply-nested dotfiles too * chore(sirv): update `polka/url` dep; lukeed/polka#119 * v1.0.0-next.2 * feat(sirv-cli): add `--pass` flag for passphrase * v1.0.0-next.3 * fix(sirv): compare `ETag` against `If-None-Match` header (#56) * fix(sirv-cli): use `host` for port availability * Add support for ETag-based caching When providing an ETag header on responses, the client automatically sends that header value on subsequent requests for the matching resource as an `If-None-Match` request header. If the ETag value received in `If-None-Match` is the same as the ETag computed by the disk crawl, a 304 "Not Modified" status can be returned along with an empty body to indicate that the requestor's cached value should be used. * chore: use existing `isEtag` var Co-authored-by: Luke Edwards <luke.edwards05@gmail.com> * chore(sirv): squash declaration * v1.0.0-next.4 * break: require Node 10.x minimum; - Node 8.x is already End of Life (2019-12-31) * v1.0.0-next.5 * feat(sirv): add type definitions; - Closes #61 * chore: add `notice` to base readme re: website; - Closes #62 * feat(sirv): add `filter` option to determine file list; - supplants default `dotfiles` matcher, responsible for own logic - Closes #50 * fix(sirv): replace `filter` w/ built-in ".well-known" allowance; - Closes #50 * chore: rename files * chore(sirv-cli): rename `boot` file * chore(sirv): produce `build` files w/ "module" entry * chore: run tests with esm loader * chore: re-extract `middleware` helper file * chore: begin integration test suites; - include fixtures directory * chore: use `pnpm` again for lerna; This reverts commit a56872b. # Conflicts: # lerna.json * chore(action): install `pnpm` for ci * chore: add `single` tests * chore(action): use `curl` installer for pnpm * chore: add "extensions" tests * chore: add `dotfiles` test suite * chore: add `dev` test suite * chore: add `etag` test suite * chore: add `brotli` and `gzip` suites * chore: add `maxAge` and `immutable` test suites * chore: add `ranges` test suite * fix(test): remove `only` on dotfiles suite * chore: import `setHeaders` and `onNoMatch` suites * chore: cleanup test helpers * chore: include "build" step in CI * chore: initial CLI tests * revert: allow normal resolution * chore: try `actions/cache` recipe * chore: add loose CLI tests * fix(test): terminate child procs correctly * chore: boot `http2` server within test * fix(sirv): normalize encoded/accented characters for cache * debug: server spawner really annoying * feat: add "assets" option (#53) * Add option to specify asset paths for SPAs Allows asset path prefixes to be specified by the CLI when running in single-page mode. If a path is requested that doesn't exist, and that path matches one of the asset path prefixes, the request will 404 instead of retuning a 200 containing the root index. Fixes #44 * fix: ensure `assets` array & preload prep work * chore: add `assets` tests * chore: update options definition * update `--single` & `--assets` text Co-authored-by: Luke Edwards <luke.edwards05@gmail.com> * refactor: rename "assets" to "ignores" option * fix: include dotfiles & well-known in default ignores * fix: move `ignores` check into `toAssume` builder * refactor: hoist bound `lookup` function * fix(sirv): do not fill cache when `dev` true * v1.0.0-next.6 * fix(sirv): extension regexp * v1.0.0-next.7 * fix(sirv): remove premature ignore check; - ran before extensions could be applied - effectively reverts to #53 * v1.0.0-next.8 * fix(sirv): allow definition to export type members * v1.0.0-next.9 * fix(sirv): dedupe extensions list w/ brotli + gzip * chore: update documentation * chore: update bench figures; - include dummy apps directly * chore: fix spacing Co-authored-by: Jason Miller <developit@users.noreply.github.com> Co-authored-by: Carey Metcalfe <carey@cmetcalfe.ca>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
When providing an ETag header on responses, the client automatically sends that header value on subsequent requests for the matching resource as an
If-None-Match
request header. If the ETag value received inIf-None-Match
is the same as the ETag computed by the disk crawl, a 304 "Not Modified" status can be returned along with an empty body to indicate that the requestor's cached value should be used.I'm currently using the following workaround to implement this manually: