Кеш-прокси сервер - PullRequest
       13

Кеш-прокси сервер

2 голосов
/ 05 февраля 2012

Я создаю кеш-прокси-сервер, и мне было интересно, если кто-нибудь может помочь мне с кешем.Я использую c #, это просто консольное приложение, и мой кеш не работает.Вкладка в браузере будет клиентом для прокси-сервера, и для каждого клиента (вкладки) должен быть только один кэш для доступа к ней.

public class CacheManager
{
    private static CacheManager _instance;
    private static readonly object _syncLock = new object( );
    private static ObjectCache _currentCache = MemoryCache.Default;

    private CacheManager( )
    {
    }

    public static CacheManager Instance
    {
        get
        {
            lock ( _syncLock )
            {
                if ( _instance == null )
                    _instance = new CacheManager( );
            }
            return _instance;
        }
    }


    public bool Contains( string key )
    {
        return _currentCache[ key ] != null;
    }

    public T Get<T>( string key )
    {
        return ( T )_currentCache[ key ];
    }

    public void Add<T>( string key, T data ) where T : class
    {
        if ( data != null )
        {
            var cachePolicy = new CacheItemPolicy
            {
                AbsoluteExpiration = DateTime.Now.AddHours( 1 ),
                SlidingExpiration = TimeSpan.Zero
            };

            _currentCache.Add( new CacheItem( key, data ), cachePolicy );
        }
    }

    public void Remove( string key )
    {
        if ( !Contains( key ) ) return;

        _currentCache.Remove( key );
    }

}

И здесь я вызываю ее в моем клиентекласс:

if( cache.Contains( _host ) )
        {
            //Console.WriteLine( "Object in cache! :D" );
            var get = ( String )cache.Get<String>( _host );

            _cacheBuffer = Encoding.ASCII.GetBytes( get );

            ClientSocket.Send( _cacheBuffer );

        }

        else
        {
            Action inv = ( ) => StartTransferToBrowser( );
            inv.Invoke( );
        }

Любая помощь будет в порядке.

...