//------------------------------------------------------------------------------
// The contents of this file are subject to the nopCommerce Public License Version 1.0 ("License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at http://www.nopCommerce.com/License.aspx.
//
// Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
// See the License for the specific language governing rights and limitations under the License.
//
// The Original Code is nopCommerce.
// The Initial Developer of the Original Code is NopSolutions.
// All Rights Reserved.
//
// Contributor(s): _______.
//------------------------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Caching;
using NopSolutions.NopCommerce.BusinessLogic.Configuration;
namespace NopSolutions.NopCommerce.BusinessLogic.Caching{
/// <summary>
/// Represents a NopCache
/// </summary>
public partial class NopCache
{
#region Fields
private static readonly Cache _cache;
#endregion
#region Ctor
/// <summary>
/// Creates a new instance of the NopCache class
/// </summary>
static NopCache()
{
HttpContext current = HttpContext.Current;
if (current != null)
{
_cache = current.Cache;
}
else
{
_cache = HttpRuntime.Cache;
}
}
/// <summary>
/// Creates a new instance of the NopCache class
/// </summary>
private NopCache()
{
}
#endregion
#region Methods
/// <summary>
/// Removes all keys and values from the cache
/// </summary>
public static void Clear()
{
IDictionaryEnumerator enumerator = _cache.GetEnumerator();
while (enumerator.MoveNext())
{
_cache.Remove(enumerator.Key.ToString());
}
}
/// <summary>
/// Gets or sets the value associated with the specified key.
/// </summary>
/// <param name="key">The key of the value to get.</param>
/// <returns>The value associated with the specified key.</returns>
public static object Get(string key)
{
return _cache[key];
}
/// <summary>
/// Adds the specified key and object to the cache.
/// </summary>
/// <param name="key">key</param>
/// <param name="obj">object</param>
public static void Max(string key, object obj)
{
Max(key, obj, null);
}
/// <summary>
/// Adds the specified key and object to the cache.
/// </summary>
/// <param name="key">key</param>
/// <param name="obj">object</param>
/// <param name="dep">cache dependency</param>
public static void Max(string key, object obj, CacheDependency dep)
{
if (IsEnabled && (obj != null))
{
_cache.Insert(key, obj, dep, DateTime.MaxValue, TimeSpan.Zero, CacheItemPriority.AboveNormal, null);
}
}
/// <summary>
/// Removes the value with the specified key from the cache
/// </summary>
/// <param name="key"></param>
public static void Remove(string key)
{
_cache.Remove(key);
}
/// <summary>
/// Removes items by pattern
/// </summary>
/// <param name="pattern">pattern</param>
public static void RemoveByPattern(string pattern)
{
IDictionaryEnumerator enumerator = _cache.GetEnumerator();
Regex regex = new Regex(pattern, RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.IgnoreCase);
while (enumerator.MoveNext())
{
if (regex.IsMatch(enumerator.Key.ToString()))
{
_cache.Remove(enumerator.Key.ToString());
}
}
}
#endregion
#region Properties
/// <summary>
/// Gets or sets a value indicating whether the cache is enabled
/// </summary>
public static bool IsEnabled
{
get
{
return NopConfig.CacheEnabled;
}
}
#endregion
}
}
|