Belki şimdiye kadar dikkatinizi çekmemiş yada gözden kaçırmış olabilirsiniz. Belki de "ikisi de aynı Cache'e ekleme yapıyor" diye de düşünüp ikisinden birisini alışkanlık edinip kullanıyor olabilirsiniz. Ama ikisi arasında ince ama çok önemli bir fark var.


Öncelikle bu iki metodun imzalarına (signature) bakarsak ; (imzalara geri dönüş değerleri dahil edilmez)

public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);
public object Add(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);


aynı gibi görünsede işlev olarak farklılar.


Insert metodunun geridönüş değeri yokken, Add metodu object türünden bir geridönüş değerine sahip. Bu da şu demektir.
Eğer siz bir nesneyi Add metodu ile Cache'e eklemek istediğinizde, Cache'de daha önceden aynı key ile saklanmış bir nesne varsa size daha önceden Cache'e atılmış nesneyi geri döndürür. Cache'de aynı key'e ait  bir nesne yoksa null değer döndürür ve eski nesne korunur - aslında siz Cache'deki belirli bir key'e ait nesneyi güncellemek isterken sürekli Cache'e ilk eklenen nesnenin varolduğunu göreceksiniz - . Oysa Insert metodunda durum farklıdır. Insert metodunu kullanarak Cache'e bir nesne eklemek istediğinizde, eğer daha önceden aynı key ile eklenmiş bir nesne varsa eski değer yerine yenisi konulur (güncellenir), yoksa da belirlediğiniz key ile Cache'e yeni bir nesne eklenir.



string


strData = TextBox1.Text;

//eğer daha onceden hede keyine ait bir nesne Cache'de var ise o nesnesi önceki neseneyi verir. Yoksa da - ilk defa hede key'i ile Cache'e ekleme yapılıyorsa null değere sahip olur
//object
o = Cache.Add("hede", strData, null, DateTime.MaxValue, TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Normal, null);

//her ekeleme işleminden sonra hede Cache'deki hede key'ine ait nesne güncellenmiş olur.
//Cache.Insert("hede", strData, null, DateTime.MaxValue, TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Normal, null);
Response.Write((string)Cache["hede"]);