Hej, Om du kör med .Net 2.0 så kan du nu ärva från CacheDependendy och skapa din egna implementation som går mot din collection och kan notifiera om den har blivit förändrad. Du kan sedan cacha data med hjälp av Cache objektet där du skickar in din dependency när du lägger till en item till Cache objektet. OBS! Du kan bara använda dig av din egna CacheDependency när du använda Cache objektet för cacha data.. så det funkar inte att använda den för outputcache, där har du bara SqlCacheDependency som alternativ. Du kan iofs rensa output cachen från code-behind genom hacka lite kod.. Se om följande kan hjälpa dig:Cache och collection
Jag vill cacha en collection av object liknande CacheDependency och en xml fil.
Dvs. Om det sker en förändring av innehållet i min collection ska cachen uppdateras.
Tyvärr kan jag inte använda SqlCacheDependency eftersom jag får allt data via ett api och inte direkt från sqldatabasen.
Någon som känner till en fiffig lösning på detta?Sv: Cache och collection
Sv: Cache och collection
http://aspnet.4guysfromrolla.com/articles/100902-1.2.aspx
Under "Inserting an Item into the Cache"'
Ett utdrag:
"There may be times when you don't want an item to exist in the cache indefinitely. For example, say that you were displaying an XML file in an ASP.NET DataGrid. (See XML, the DataSet, and a DataGrid for an article illustrating how to accomplish this!) Rather than load the XML file into a DataSet and bind the DataSet to the DataGrid each page view, you may opt to cache the DataSet in the data cache. This option would work great until the XML file was altered; at that point, if you were still displaying the cached DataSet the user would be seeing stale information.
To overcome this problem, you can add the DataSet to the data cache, but specify that the XML file it represents is a cache dependency. By setting this file as a cache dependency, when the file changes the DataSet will be automatically evicted from the cache. That means the next time the DataSet is attempted to be read from the cache, it will not be found (since it has been evicted) and will be recreated by repopulating the DataSet from the XML file. This is desired since the XML file has changed since the DataSet was last cached. In order to insert an item with a cache dependency, you can do:
Cache.Insert("key", myDataSet, New CacheDependency(Server.MapPath("data.xml")))
If you wish to have the cache item evicted from the cache in an absolute time, say, five minutes from when it was inserted into the cache, you can use the third form of the Insert method, whose fourth parameter expects a DateTime value specifying the absolute time. The following code illustrates how to add an item to the cache that will expire five minutes from when it was added and has no cache dependencies:
Cache.Insert("key", value, Nothing, DateTime.Now.AddMinutes(5), TimeSpan.Zero)
In C# you would use null instead of Nothing to signify that you do not want a cache dependency. "
Alternativt om du vill göra egen så kolla in
"Cutting Edge Implement Custom Cache Dependencies in ASP.NET 1.x"
(De har även med delar från Asp.Net 2.0...)
På: http://msdn.microsoft.com/en-us/magazine/cc163955.aspx