January 2026

S M T W T F S
     123
4 5678 910
11 12 1314151617
18 192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Monday, June 4th, 2007 05:38 pm

Вопрос для программистов:

Предположим, у нас имеется некий кеш, который должен содержать произвольные данные. Данные имеют срок годности, для каждой единицы данных разный, который определяется клиентом. Есть два способа общаться с таким кешем:

1. Когда что-то кладется в кеш, клиент говорит срок годности (возьми А и держи 5 минут)
2. Когда что-то берется из кеша, клиент говорит срок годности (дай мне А не старше 5 минут)

Есть ли какие-то причины предпочитать один из этих способов другому, и если да, то какие?
Tuesday, June 5th, 2007 06:19 am (UTC)
а как во втором случае данные в кеше буду устаревать для самого кеша (не для клиента) ?
Tuesday, June 5th, 2007 06:38 am (UTC)
т.е. получатся при первом случае кешь будет точно знать когда данные устарели, во втором же ему придется выбирать какие данные освободить причем по не
вполне конкретным критериям.

предположим у нас в кеше есть данные которые запрашиваются часто, живут недолго, получить свежие мы может достаточно быстро и дешево. и другие которые должны жить долго,
запрашиваются несколько меньше но их свежая копия нам стоит дорого. при втором способе кешь не знает какие данные уже не актуальны, он всегда будет вынужден выбирать из "свежих"
поэтому может получится что будут удалены "дорогие" данные.

вообще второй способ вполне можно скомбинировать с первым, т.е данные в кеш имеют с ttl который указывается при store, но клиент может при запросе указать "свежесть" данных.
таким образом для разных данных можно получить разные политики комбинируя разные параметры.

P.S тут http://www.hpl.hp.com/techreports/1999/HPL-1999-69.html про cache policy для squid, может что для себя найдете полезного.