私のWebアプリケーションの特定の部分をキャッシュしようとしています。ワニスのキャッシュとヘッダー
私はhttp://website.dev/pictures/:id
というエンドポイントを持ち、PHPで生成された画像を返します。場合によっては、エンドポイントにクエリ文字列の幅と高さを指定して、ピクチャのディメンションを定義することができます(http://website.dev/pictures/:id?w=100&h=100
)。
私は非常に長い時間これらの要求をキャッシュしたいと思います。
私はそれに新たなんだと私は複雑なものを作るにしたくないと私は非常にシンプルなVCLを試してみました:
vcl 4.0;
backend default {
.host = "127.0.0.1";
.port = "80";
}
sub vcl_recv {
if (req.url ~ "^/api/pictures" && req.method ~ "GET") {
# I heard that it was better to unset the cookies here to allow cache
unset req.http.cookie;
return (hash);
}
return (pass);
}
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}
しかし、今、私は私の要求にすべてMISSを取得します。私は、適切なキャッシュ制御を持つために私のバックエンドからの応答を変更しようとしたヘッダ期限が切れる:私は間違ってここにいる
Response Headers:
Accept-Ranges:bytes
Age:0
Cache-Control:max-age=10000, private
Connection:keep-alive
Content-Length:96552
Content-Type:image/jpeg
Date:Sun, 30 Jul 2017 16:41:58 GMT
Expires:Fri, 01 Jan 2100 00:00:00 GMT
Server:nginx/1.10.3 (Ubuntu)
Via:1.1 varnish (Varnish/5.1)
X-Cache:MISS
X-RateLimit-Limit:60
X-RateLimit-Remaining:57
X-Varnish:32772
Request Headers
view source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4,es;q=0.2
Cache-Control:max-age=0
Connection:keep-alive
Cookie:_ga=xxxxxxxxxxxxx
Host:website.dev:6081
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
を?どのようにしてこのようなエンドポイントで要求が確実に行われ、ワニスによってのみキャッシュされるのですか?