Кеширане на обектна йерархия

Сайт на Delphi: ежедневни Delphi-новини, документация, статии, рецензия, интервю, компютърен хумор.

Съхраняването на обекти в йерархия на кеша може да опрости извличането, обезсилването и по-ефективното използване на паметта. Вместо да кеширате само самите обекти, можете да кеширате техните идентификатори, както и групи от идентификатори на обекти, които обикновено се извличат заедно.

Сайт за електронна търговия предоставя добър пример за тази техника. Резултатът от търсенето може да бъде списък с подходящи продукти, включително имена, описания, миниатюри на снимки и цени. Кеширането на целия списък би било неефективно: много вероятно е друго търсене да върне някои от продуктите, които вече е намерило, така че ще запазим дубликати, губейки памет. Освен това, с такава стратегия би било трудно да се намерят и обезсилят тези от кешираните резултати от търсенето, които съдържат елементи с променена цена, тъй като ще трябва да премине през всички списъци без изключение.

Вместо да кеширате целия списък с продукти, можете да съхранявате само минимална информация за търсенето, като например броя на намерените елементи и списък с техните идентификатори. И всеки продукт ще бъде кеширан отделно. По този начин решаваме и двата проблема: резултатите не се дублират и изместването може да се извърши с точност на един продукт.