- cluster list:
ctag.$group.$kind
- namespace list:
ctag.$group.$kind.ns.$ns
- namespaced object:
ctag.$group.$kind.ns.$ns.n.$name
- non-namespaced object:
ctag.$group.$kind.n.$name
request:
if namespaced {
key = 'ctag.$group.$kind.ns.$ns'
} else {
key = 'ctag.$group.$kind'
}
?ctag=localStorage.getItem(key)
response:
if namespaced {
suffix = '$group.$kind.ns.$ns'
} else {
suffix = '$group.$kind'
}
if response.Headers["ETag"] != localStorage.getItem('etag.'+suffix) {
localStorage.setItem('etag.'+suffix, response.Headers["ETag"])
}
request:
?ctag=Date.now() // using unix epoch ms, as something random
response:
if namespaced {
suffix = 'ctag.$group.$kind.ns.$ns'
} else {
suffix = 'ctag.$group.$kind'
}
if response.Headers["ETag"] != localStorage.getItem('etag.'+suffix) {
localStorage.setItem('ctag.'+suffix, request.Query['ctag'])
localStorage.setItem('etag.'+suffix, response.Headers["ETag"]) // optimization, use cached background call
if namespaced {
reset_ctag = Date.Now(); // using unix epoch ms, as something random
localStorage.setItem('ctag.$group.$kind', reset_ctag) // invalidate cluster list cache
}
}
request:
if namespaced {
key = 'ctag.$group.$kind.ns.$ns.n.$name'
} else {
key = 'ctag.$group.$kind.n.$name'
}
?ctag=localStorage.getItem(key)
response:
if namespaced {
suffix = '$group.$kind.ns.$ns.n.$name'
} else {
suffix = '$group.$kind.n.$name'
}
if response.Headers["ETag"] != localStorage.getItem('etag.'+suffix) {
localStorage.setItem('etag.'+suffix, response.Headers["ETag"])
reset_ctag = Date.Now(); // using unix epoch ms, as something random
if namespaced {
localStorage.setItem('ctag.$group.$kind.ns.$ns', reset_ctag) // invalidate ns list cache
}
localStorage.setItem('ctag.$group.$kind', reset_ctag) // invalidate cluster list cache
}
request: No nothing
response:
if namespaced {
keys = [
'ctag.$group.$kind.ns.$ns.n.$name', // object ctag
'ctag.$group.$kind.ns.$ns', // ns list ctag
'ctag.$group.$kind' // cluster list ctag
]
} else {
keys = ['ctag.$group.$kind.n.$name', 'ctag.$group.$kind']
}
reset_ctag = Date.now() // using unix epoch ms, as something random
for key in keys {
localStorage.setItem(key, reset_ctag) // invalidate cache
}
HTTP Caching: tamalsaha/learn-helm-oci#1