public Stream Read(CacheVariable variable) { byte[] buffer = null; if (_contentData.TryGetValue(variable.UniqueCode, out buffer)) { return(new MemoryStream(buffer)); } return(null); }
public void Delete(CacheVariable variable) { const string sql = "delete from dbo.cache where code=@code"; var prms = SqlHelper.CreateParameters((c) => { c.Add("@code", variable.UniqueCode); }); SqlHelper.ExecuteCommandText("db-cache", sql, prms); }
/// <summary> /// 更新缓存器内容 /// </summary> /// <param name="variable"></param> public void Update(CacheVariable variable, Stream content) { if (content.Length > int.MaxValue) { throw new WebCacheException("MemoryStorage无法存储超过" + int.MaxValue + "个字节的缓存内容!"); } byte[] buffer = new byte[content.Length]; content.ReadPro(buffer, 0, (int)content.Length); _contentData.AddOrUpdate(variable.UniqueCode, buffer, (key, value) => buffer); _modifiedData.AddOrUpdate(variable.UniqueCode, DateTime.Now, (key, value) => DateTime.Now); }
public void Delete(CacheVariable variable) { var host = new WebHost(variable.Url); var target = string.Format("{0}://{1}/cache/memory.htm?code={2}", host.Protocol, host.Host, HttpUtility.UrlEncode(variable.UniqueCode, Encoding.UTF8)); using (WebClient client = new WebClient()) { try { client.DownloadData(target); } catch (Exception ex) { throw ex; } } }
/// <summary> /// 更新缓存器内容 /// </summary> /// <param name="url"></param> public void Update(CacheVariable variable, Stream content) { if (content.Length > int.MaxValue) { throw new WebCacheException("SqlCacheStorage无法存储超过" + int.MaxValue + "个字节的缓存内容!"); } byte[] buffer = new byte[content.Length]; content.ReadPro(buffer, 0, (int)content.Length); var prms = SqlHelper.CreateParameters((c) => { c.Add("@code", variable.UniqueCode); c.Add("@cont", buffer); }); SqlData data = SqlHelper.ExecuteCommandText("db-cache", _updateContentSql, prms); }
public Stream Read(CacheVariable variable) { const string sql = "select cont from dbo.cache where code=@code"; var prms = SqlHelper.CreateParameters((c) => { c.Add("@code", variable.UniqueCode); }); SqlData data = SqlHelper.ExecuteCommandText("db-cache", sql, prms); if (data.IsEmpty()) { return(null); } byte[] buffer = data.GetScalar <byte[]>(); return(new MemoryStream(buffer)); }
public bool TryGetLastModified(CacheVariable variable, out DateTime lastModified) { lastModified = DateTime.Now; const string sql = "select lastModified from dbo.cache where code=@code"; var prms = SqlHelper.CreateParameters((c) => { c.Add("@code", variable.UniqueCode); }); SqlData data = SqlHelper.ExecuteCommandText("db-cache", sql, prms); if (data.IsEmpty()) { return(false); } lastModified = data.GetScalar <DateTime>(); return(true); }
public void Delete(CacheVariable variable) { }
/// <summary> /// 更新缓存器内容 /// </summary> /// <param name="variable"></param> public void Update(CacheVariable variable, Stream content) { }
public Stream Read(CacheVariable variable) { return(null); }
public bool TryGetLastModified(CacheVariable variable, out DateTime lastModified) { lastModified = DateTime.Now; return(false); }
/// <summary> /// 向缓存区中写入信息 /// </summary> /// <param name="content"></param> public override void Write(WebPageContext context, Stream content, ICacheStorage storage) { var variable = new CacheVariable(GetUrl(context), context.CompressionType, context.Device); storage.Update(variable, content); }
/// <summary> /// 读取缓存区中的流信息 /// </summary> /// <returns></returns> public override Stream Read(WebPageContext context, ICacheStorage storage) { var variable = new CacheVariable(GetUrl(context), context.CompressionType, context.Device); return(storage.Read(variable)); }
protected bool TryGetCacheTime(WebPageContext context, out DateTime cacheTime, ICacheStorage storage) { var variable = new CacheVariable(GetUrl(context), context.CompressionType, context.Device); return(storage.TryGetLastModified(variable, out cacheTime)); }
public bool TryGetLastModified(CacheVariable variable, out DateTime lastModified) { return(_modifiedData.TryGetValue(variable.UniqueCode, out lastModified)); }