代码存档

    public static bool IsCached(HttpContext context, TimeSpan cacheDuration)
    {
        var modifiedSince = context.Request.Headers["If-Modified-Since"];
        if (!string.IsNullOrEmpty(modifiedSince))
        {
            modifiedSince = Regex.Replace(modifiedSince, @";.*$", "");//ie6
        }
        DateTime modified;
        if (DateTime.TryParse(modifiedSince, out modified) && modified.Add(cacheDuration) > DateTime.Now)
        {
            context.Response.StatusCode = 304;
            context.Response.Status = "304 Not Modified";
            return true;
        }
        return false;
    }
    public static void SetCachedHeader(HttpContext context, TimeSpan cacheDuration)
    {
        FieldInfo maxAge = context.Response.Cache.GetType().GetField("_maxAge",
BindingFlags.Instance | BindingFlags.NonPublic);
        maxAge.SetValue(context.Response.Cache, cacheDuration);
        //context.Response.Cache.SetMaxAge(cacheDuration);
        context.Response.Cache.SetETag(string.Empty);
        context.Response.Cache.SetCacheability(HttpCacheability.Public);
        context.Response.Cache.SetLastModified(DateTime.Now);
        context.Response.Cache.SetExpires(DateTime.Now.Add(cacheDuration));
        context.Response.Cache.AppendCacheExtension(
                "must-revalidate, proxy-revalidate");
    }
    public static void Cached(HttpContext context)
    {
        Cached(context, TimeSpan.FromMinutes(10));
    }

    public static void Cached(HttpContext context, TimeSpan cacheDuration)
    {
        if (!IsCached(context, cacheDuration))
        {
            SetCachedHeader(context, cacheDuration);
        }
        else
        {
            context.Response.End();
        }

    }
    public static void GZIP(HttpContext context)
    {
        string acceptEncoding = context.Request.Headers["Accept-Encoding"];

        if (!String.IsNullOrEmpty(acceptEncoding))
        {
            acceptEncoding = acceptEncoding.ToString().ToUpperInvariant();
            //如果头部里有包含"GZIP”,"DEFLATE",表示你浏览器支持 GZIP,DEFLATE压缩
            if (acceptEncoding.Contains("GZIP"))
            {
                //向输出流头部添加压缩信息
                context.Response.AppendHeader("Content-encoding", "gzip");
                context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
            }
            else if (acceptEncoding.Contains("DEFLATE"))
            {
                //向输出流头部添加压缩信息
                context.Response.AppendHeader("Content-encoding", "deflate");
                context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress);
            }
        }
    }

转载于:https://www.cnblogs.com/dushouke/archive/2010/10/19/1855587.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值