Cacheowanie obiektów w varnishu w zależności od popularności
Napisał: Patryk Krawaczyński
05/07/2012 w Administracja Brak komentarzy. (artykuł nr 358, ilość słów: 241)
J
eśli interesuje nas dłuższe cechowanie w varnishu obiektów, które są bardziej popularne od innych – poniższy przykład pozwoli wydłużyć przetrzymywanie obiektu w pamięci cache, jeśli ten zostanie wywołany więcej niż 500 (5 godzin) i 1000 (10 godzin) razy:
sub vcl_hit { if (obj.hits == 500) { set obj.ttl = 5h; } elsif (obj.hits == 1000) { set obj.ttl = 10h; } }
Możemy również trzymać obiekt w pamięci cache dopóki nie będzie już popularny:
sub vcl_hit { if (obj.lastuse < 1h && obj.hits > 100) { set obj.ttl = 5h } }
W pierwszym przypadku ważne jest, aby wykorzystać znak równości, ponieważ w razie użycia znaku większości np. obj.hits > 500
TTL obiektu zostanie zwiększone za każdym trafieniem po 500’set trafieniach. A jak sprawdzić czy w ogóle takie liczby są osiągane w naszym przypadku? Wystarczy oznaczyć trafiane obiekty odpowiednim nagłówkiem z informacją o ilości trafień:
sub vcl_deliver { if (obj.hits > 0) { set resp.http.X-Hits = obj.hits; } }
I próbować wyłapać je za pomocą varnishlog’a:
varnishlog -O -i TxHeader -I X-Hits: 500
Wszystko zależny od naszego środowiska. Oczywiście najlepszą drogą są własne eksperymenty z własnymi wartościami.
Więcej informacji: Varnish Cache