2 ms·
Not sure i get the idea, but i suppose it's about adding the hit counts in the response and then query the URL from the backend ? If yes, that's an interesting
by _cyqui 12y ago
Not sure i get the idea, but i suppose it's about adding the hit counts in the response and then query the URL from the backend ?
If yes, that's an interesting approach, but in my opinion it has two drawbacks.
- It requires a loop through each entities that is supposed to have it's hits counted periodically and query Varnish for it.
- There can be hits not counted if for some reason we purge Varnish (not sure about this assertion tho) between two polls.
http://cyqui.fr/blog/Varnish-counting-hits-on-cached-objects.html#using-objects-cache-hits http://cyqui.fr/blog/Varnish-counting-hits-on-cached-objects...
While with Redis as the counter storage:
- We can fetch periodically keys matching 'view_counter_${entity_type}_${entity_id}' (using KEYS command) and it gives a lot of flexibility application side
- We do not have to worry about the counters states
- aenum 12y agoIndeed. You would have to poll the endpoints you want to monitor periodically and obviously the hit counter will reset when the object is expired/purged. Something like sub vcl_deliver { if (client.ip == "127.0.0.1") { # or header/method/whatever set resp.http.X-Cache-Hits = resp.hits; } }
- _cyqui 12y agoWill quote this thread in the blog post so that it's more complete by also mentionning this solution (could fit some needs)