~alcinnz/hurl

5123ffb5014de4e2634bb713f897fc682bd94f2c — Adrian Cochrane 4 years ago e2baa08
Add implementation notes for response caching.
2 files changed, 19 insertions(+), 0 deletions(-)

M ISSUES/cache-responses.md
D ISSUES/cache-responses.md~
M ISSUES/cache-responses.md => ISSUES/cache-responses.md +19 -0
@@ 3,3 3,22 @@ HTTP responses should be cached locally according to their cache-control headers
Especially once Rhapsode starts supporting hyperlinks.

This could be developed as an independant project and integrated in!

## Caching headers
* `CacheControl`, legacy `Pragma: no-cache`
* `Expires`, may also be set via `CacheControl` or `Last-Modified`
* `Etag` - echo back in `If-None-Match`
* `Last-Modified` - echo back in `If-Modified-Since`
* `Vary` - indicates which headers to compare for equality before using a cache.

Use cached data for 304 responses.

## Implementation
I'd store an index file, with cached bodies stored seperately.

There'd be four parts to implementing the cache:
1. Annotating the request.
2. Loading cached data for 304 responses.
3. Storing cache responses.

GNOME's implementation: https://github.com/GNOME/libsoup/blob/mainline/libsoup/soup-cache.c

D ISSUES/cache-responses.md~ => ISSUES/cache-responses.md~ +0 -0