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; }