~alcinnz/hurl

ref: 5a4a453d6b9ec3d0986c73f4e73ed03c0a4065dd hurl/ISSUES/cache-responses.md -rw-r--r-- 888 bytes
5a4a453d — Adrian Cochrane dependency is required for ext: regardless of buildflag. 3 years ago

#Cache Responses

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