~/bend-docscommunity

cache.bend checks

raw source on the hub · import 0x0a372da4a053652f70ded7d6e0d19330/cache.bend as Cache

ezhttp/cache: Cache-Control and a small freshness check (RFC 9111). This is not a shared cache. Expires is recorded; max-age overrides it for freshness. IMF-fixdate arithmetic is not evaluated.

2 imports
import Base
import ./http.bend as Http

Types

type Cc source · line 8 · raw

Data

the directives this module records

Definitions

def cache.empty source · line 19 · raw

Cc

no directives

def cache.store source · line 23 · raw

@c:Cc -> Cc

set no-store

def cache.revalidate source · line 29 · raw

@c:Cc -> Cc

set no-cache

def cache.pub source · line 35 · raw

@c:Cc -> Cc

set public

def cache.priv source · line 41 · raw

@c:Cc -> Cc

set private

def cache.age source · line 47 · raw

@c:Cc -> @age:String -> Cc

set max-age text

def cache.expires source · line 53 · raw

@c:Cc -> @when:String -> Cc

set the Expires header text

def cache.one.private source · line 59 · raw

@c:Cc -> @_name:String -> @_value:String -> @hit:Bool -> Cc

private, or leave the directive unrecognized

def cache.one.public source · line 67 · raw

@c:Cc -> @+name:String -> @value:String -> @hit:Bool -> Cc

public

def cache.one.age_ok source · line 75 · raw

@c:Cc -> @+raw:String -> @m:Maybe<&2, Nat> -> Cc

max-age, kept only when the argument is digits (delta-seconds)

def cache.one.age source · line 83 · raw

@c:Cc -> @+name:String -> @+value:String -> @hit:Bool -> Cc

max-age

def cache.one.cache source · line 91 · raw

@c:Cc -> @+name:String -> @+value:String -> @hit:Bool -> Cc

no-cache

def cache.one.store source · line 99 · raw

@c:Cc -> @+name:String -> @+value:String -> @hit:Bool -> Cc

no-store

def cache.one.flag source · line 107 · raw

@c:Cc -> @+name:String -> Cc

a directive with no = argument

def cache.one.dispatch source · line 111 · raw

@c:Cc -> @+piece:String -> @cut:0x0a372da4a053652f70ded7d6e0d19330/http.Cut -> Cc

flag or name=value

def cache.one source · line 120 · raw

@c:Cc -> @+piece:String -> Cc

one directive text

def cache.fold source · line 124 · raw

@ps:List<&2, String> -> @c:Cc -> Cc

walk directives. The list shrinks.

def cache.parse source · line 132 · raw

@value:String -> Cc

Cache-Control field value (RFC 9111 §5.2)

def cache.note source · line 136 · raw

@value:String -> @expires:String -> Cc

record an Expires header beside Cache-Control (RFC 9111 §5.3)

def cache.max_age source · line 140 · raw

@c:Cc -> Bool

true when max-age is present, so it overrides Expires (RFC 9111 §4.2.1)

def cache.fresh.go source · line 146 · raw

@age:Nat -> @m:Maybe<&2, Nat> -> Bool

freshness from max-age. no-store and no-cache are not fresh.

def cache.fresh.cache source · line 154 · raw

@age:Nat -> @max_age:String -> @no_cache:Bool -> Bool

no-cache must revalidate

def cache.fresh.store source · line 162 · raw

@age:Nat -> @no_cache:Bool -> @max_age:String -> @no_store:Bool -> Bool

no-store is not reused

def cache.fresh source · line 171 · raw

@c:Cc -> @age:Nat -> Bool

age seconds against the directives. max-age=0 is stale (RFC 9111 §4.2.1).