3
A
답변
5
당신이 캐시에 항목을 추가하고, 당신은 세계 키로 CacheDependency로 추가해야합니다. 이렇게하면 주어진 시간이 지나면 항목이 만료 될뿐만 아니라이 키에 연결된 모든 항목이 지워집니다.
/// <summary>
/// Caching provider
/// </summary>
public static class CacheProvider
{
const string CacheDependencyKey = "1FADE275-2C84-4a9b-B3E1-68ABB15E53C8";
static readonly object SyncRoot = new object();
/// <summary>
/// Gets an item from cache. If the item does not exist, one will be
/// created and added to the cache.
/// </summary>
/// <param name="key">Caching key</param>
/// <param name="valueFactory">Function to create the item of it does not exist in the cache.</param>
/// <param name="expiresAfter">Time after the item wille be removed from cache.</param>
public static TValue GetOrAdd<TValue>(string key, Func<TValue> valueFactory, TimeSpan expiresAfter)
{
object itemFromCache = HttpRuntime.Cache.Get(key);
if (itemFromCache == null)
{
lock (SyncRoot)
{
itemFromCache = HttpRuntime.Cache.Get(key);
if (itemFromCache == null)
{
TValue value = valueFactory();
if (value != null)
{
if (HttpRuntime.Cache[CacheDependencyKey] == null)
HttpRuntime.Cache[CacheDependencyKey] = string.Empty;
HttpRuntime.Cache.Add(key, value, new CacheDependency(null, new string[] { CacheDependencyKey }), DateTime.Now.Add(expiresAfter), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
}
return value;
}
}
}
return (TValue)itemFromCache;
}
/// <summary>
/// Invalidate all the items from the cache.
/// </summary>
public static void InvalidateCache()
{
HttpRuntime.Cache.Remove(CacheDependencyKey);
}
}
2
public void Clear()
{
var itemsToRemove = new List<string>();
var enumerator = HttpContext.Current.Cache.GetEnumerator();
while (enumerator.MoveNext())
{
itemsToRemove.Add(enumerator.Key.ToString());
}
foreach (string itemToRemove in itemsToRemove)
{
HttpContext.Current.Cache.Remove(itemToRemove);
}
}
관련 문제
- 1. 새로 고침/새로 고침
- 2. 새로 고침/새로 고침 Google지도
- 3. 새로 고침/목록보기 새로 고침
- 4. 새로 고침/새로 고침 UIView
- 5. NSFetchedResultsController 새로 고침 새로 고침?
- 6. dataTable을 새로 고침/새로 고침
- 7. 팝업 창에서 페이지 새로 고침/새로 고침
- 8. UIScrollview 새로 고침 내용 새로 고침
- 9. 인터넷에서 동기화 후보기 새로 고침/새로 고침
- 10. 모든 콜백에서 UITableView 새로 고침/새로 고침
- 11. ListView WPF에서 새로 고침 제안 새로 고침
- 12. 브라우저에서 새로 고침 창 새로 고침
- 13. 리프트 : 새로 고침/새로 고침 스 니펫
- 14. Infragistics WebDataGrid 새로 고침 새로 고침
- 15. 새로 고침/새로 고침 Flot In Javascript
- 16. Magento 새로 고침 단계 새로 고침
- 17. JSON에서 페이지 새로 고침/새로 고침
- 18. 새로 고침 할 때마다 panelGrid를 새로 고침
- 19. flex에서 데이터 격자 새로 고침/새로 고침
- 20. Java JTable 재구성/새로 고침/새로 고침
- 21. 새로 고침
- 22. 새로 고침?
- 23. 새로 고침
- 24. jquery datatables 새로 작성/새로 고침 후 새로 고침
- 25. UIView에서 개체/데이터 새로 고치기위한 새로 고침/새로 고침 단추
- 26. GWT - 새로 고침 페이지 Broswers 새로 고침/새로 고침 버튼을 클릭했을 때의 문제
- 27. 다시 채우지 않고 TableAdapter의 데이터를 새로 고침/새로 고침
- 28. 새로 고침 페이지가없는 자동 새로 고침 테이블 PHP MySQL
- 29. 피드가 변경되어 캐시 피드가 새로 고침 될 때만 새로 고침
- 30. 새로 고침 asp.net mvc 웹 페이지 새로 고침
는 CacheDependency 내 경우 Cache.Insert를 사용하여, 나를 위해 그것을 해결 : 여기
는 모든 항목을 삭제하는 방법의 예 구현 (CacheProvider.cs)입니다 –