Ejemplo n.º 1
0
 /// <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);
 }
Ejemplo n.º 2
0
        /// <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);
        }