Beispiel #1
0
        public override void ProcessRequest(HttpContext context)
        {
            base.ProcessRequest(context);

            if (context.Response.StatusCode != 200)
            {
                return;
            }

            string key = context.Request.Url.OriginalString;

            if (context.Cache[key] != null)
            {
                return;
            }

            MediaRequestTrackingInformation info = new MediaRequestTrackingInformation(this.GetMediaRequest(context.Request));

            if (info.IsTrackedRequest())
            {
                return;
            }

            ResponseFilterStream filter = new ResponseFilterStream(context.Response.Filter);

            filter.TransformStream += stream => CachingFilter(stream, context, key);

            context.Response.Filter = filter;
        }