Add more advanced cache handling

This commit is contained in:
caskd 2020-03-14 14:02:07 +01:00
parent da7b5f3afe
commit cc1f1e1ad7
No known key found for this signature in database
GPG Key ID: 79DB21404E300A27
1 changed files with 41 additions and 4 deletions

View File

@ -9,11 +9,48 @@ backend default {
.between_bytes_timeout = 2s;
.proxy_header = 2;
}
sub vcl_recv {
if ( req.method != "GET" &&
req.method != "HEAD" &&
req.method != "PUT" &&
req.method != "POST" &&
req.method != "TRACE" &&
req.method != "OPTIONS" &&
req.method != "PATCH" &&
req.method != "DELETE") {
return (pipe);
}
if (req.http.Upgrade ~ "(?i)websocket") {
return (pipe);
}
if (req.method != "GET" && req.method != "HEAD") {
return (pass);
}
return (hash);
}
sub vcl_hit {
if (obj.ttl + obj.grace > 0s) {
return (deliver);
}
return (pass);
}
sub vcl_pipe {
if (req.http.upgrade) {
set bereq.http.upgrade = req.http.upgrade;
}
return (pipe);
}
sub vcl_hash {
hash_data(req.url);
if (req.http.Cookie) {
hash_data(req.http.Cookie);
}
}
sub vcl_backend_response {
set beresp.ttl = 5m;
if (bereq.url ~ "^[^?]*\.(7z|avi|bz2|flac|flv|gz|mka|mkv|mov|mp3|mp4|mpeg|mpg|ogg|ogm|opus|rar|tar|tgz|tbz|txz|wav|webm|xz|zip)(\?.*)?$") {
unset beresp.http.set-cookie;
set beresp.do_stream = true;
set beresp.grace = 1m;
set beresp.keep = 4m;
if (beresp.http.ETag || beresp.http.Last-Modified) {
set beresp.keep = 4h;
}
return (deliver);
}