mirror of
https://github.com/willnorris/imageproxy.git
synced 2026-05-09 12:02:39 +02:00
add -forceCache flag to override no-store and private directives
The httpcache package is intended only to be used in private caches, so it will cache responses marked `private` like normal. However, imageproxy is a shared cache, so these response should not be cached under normal circumstances. This change introduces a potentially breaking change to start respecting the `private` cache directive in responses. This also adds a new `-forceCache` flag to ignore the `private` and `no-store` directives, and cache all responses regardless.
This commit is contained in:
parent
8170536e41
commit
b529c116c0
5 changed files with 104 additions and 16 deletions
|
|
@ -377,6 +377,7 @@ func TestProxy_UpdateCacheHeaders(t *testing.T) {
|
|||
tests := []struct {
|
||||
name string
|
||||
minDuration time.Duration
|
||||
forceCache bool
|
||||
headers http.Header
|
||||
want http.Header
|
||||
}{
|
||||
|
|
@ -398,6 +399,14 @@ func TestProxy_UpdateCacheHeaders(t *testing.T) {
|
|||
"Cache-Control": {"max-age=600"},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "min duration, no header",
|
||||
minDuration: 30 * time.Second,
|
||||
headers: http.Header{},
|
||||
want: http.Header{
|
||||
"Cache-Control": {"max-age=30"},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "cache control exceeds min duration",
|
||||
minDuration: 30 * time.Second,
|
||||
|
|
@ -457,11 +466,53 @@ func TestProxy_UpdateCacheHeaders(t *testing.T) {
|
|||
"Cache-Control": {"max-age=3600"},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "respect no-store",
|
||||
headers: http.Header{
|
||||
"Cache-Control": {"max-age=600, no-store"},
|
||||
},
|
||||
want: http.Header{
|
||||
"Cache-Control": {"max-age=600, no-store"},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "respect private",
|
||||
headers: http.Header{
|
||||
"Cache-Control": {"max-age=600, private"},
|
||||
},
|
||||
want: http.Header{
|
||||
"Cache-Control": {"max-age=600, no-store, private"},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "force cache, normalize directives",
|
||||
forceCache: true,
|
||||
headers: http.Header{
|
||||
"Cache-Control": {"MAX-AGE=600, no-store, private"},
|
||||
},
|
||||
want: http.Header{
|
||||
"Cache-Control": {"max-age=600"},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "force cache with min duration",
|
||||
minDuration: 1 * time.Hour,
|
||||
forceCache: true,
|
||||
headers: http.Header{
|
||||
"Cache-Control": {"max-age=600, private, no-store"},
|
||||
},
|
||||
want: http.Header{
|
||||
"Cache-Control": {"max-age=3600"},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
p := &Proxy{MinimumCacheDuration: tt.minDuration}
|
||||
p := &Proxy{
|
||||
MinimumCacheDuration: tt.minDuration,
|
||||
ForceCache: tt.forceCache,
|
||||
}
|
||||
hdr := maps.Clone(tt.headers)
|
||||
p.updateCacheHeaders(hdr)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue