/// <summary> /// 写入静态文件 /// </summary> /// <param name="cachedItem"></param> /// <param name="releaseParams"></param> /// <returns></returns> private async Task <bool> Input(ResponseCachedItem cachedItem, ReleaseParams releaseParams) { try { return(await ResponseCachedMamnager.Set(releaseParams, cachedItem)); } catch (Exception ex) { // todo: 日志 } return(false); }
/// <summary> /// 输出静态文件至前端 /// </summary> /// <param name="context"></param> /// <param name="releaseParams"></param> /// <returns></returns> private async Task <bool> Output(HttpContext context, ReleaseParams releaseParams) { try { var cachedItem = await ResponseCachedMamnager.Get(releaseParams); if (cachedItem == null) { return(false); } context.Response.Headers.Clear(); if (releaseParams.ClientCached) { var clientTag = context.Request.Headers[HeaderNames.IfNoneMatch]; if (!string.IsNullOrEmpty(clientTag) && clientTag == cachedItem.HashCode) { context.Response.StatusCode = 304; return(true); } context.Response.Headers.Add(HeaderNames.ETag, cachedItem.HashCode); } context.Response.StatusCode = cachedItem.StatusCode; foreach (var header in cachedItem.Headers) { if (!context.Response.Headers.ContainsKey(header.Key)) { context.Response.Headers.Add(header.Key, header.Value); } } await context.Response.Body.WriteAsync(cachedItem.Body, 0, cachedItem.Body.Length); return(true); } catch (Exception ex) { // todo: 日志 } return(false); }