某墙尼妹,用个Response.Filter来解决StackExchange.Exceptional中google cdn的问题

简介: 某墙墙了古古路,一些开源的东东里用了古古路CDN,比如Exceptional,Opserver ,导致服务要么慢要么用不了 必须要替换之 Exceptional就只要用Response.Filter替换个页面了,因为自己维护个版本还要定期合并什么的,操心 internal class R...

某墙墙了古古路,一些开源的东东里用了古古路CDN,比如Exceptional,Opserver ,导致服务要么慢要么用不了

必须要替换之

Exceptional就只要用Response.Filter替换个页面了,因为自己维护个版本还要定期合并什么的,操心

 internal class ResponseStream : MemoryStream
        {

            #region ctor

            private Stream Output { get; set; }
            public HttpContextBase Context { get; set; }

            /// <summary>
            /// 页面输出的Stream Buffer
            /// </summary>
            public List<byte> BytesArray { get; set; }

            public ResponseStream(HttpContextBase context)
            {
                Context = context;
                Output = context.Response.Filter;
                context.Response.BufferOutput = true;
                context.Response.Buffer = true;
                BytesArray = new List<byte>();
            }

            #endregion


            public override void Write(byte[] buffer, int offset, int count)
            {
                if (Context.Response.ContentType != "text/html")
                {
                    Output.Write(buffer, offset, count);
                    return;
                }
                BytesArray.AddRange(buffer);
            }

            public override void Close()
            {
                if (BytesArray.Count > 0)
                    CloseByReplace();
                Output.Close();
                base.Close();
            }

            private void CloseByReplace()
            {
                var html = Encoding.UTF8.GetString(BytesArray.ToArray(), 0, BytesArray.Count);
                var sb = new StringBuilder(html);

                sb.Replace("//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js", "http://libs.baidu.com/jquery/1.7.2/jquery.min.js");
                var outputBytes = Encoding.UTF8.GetBytes(sb.ToString());
                Output.Write(outputBytes, 0, outputBytes.Length);
            }


        }

Action对应的改为:

        public ActionResult Exceptions()
        {
            var context = System.Web.HttpContext.Current;
            context.Response.Filter = new ResponseStream(HttpContext);
            var page = new HandlerFactory().GetHandler(context, Request.RequestType, Request.Url.ToString(),
                Request.PathInfo);
            page.ProcessRequest(context);

            return null;
        }

 

目录
相关文章
|
前端开发 CDN
Microsoft Ajax CDN与Google Ajax CDN 你来试试哪个快
Microsoft Ajax CDN http://www.asp.net/ajaxlibrary/cdn.ashx Google Ajax CDN http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html   今天小看了一下两家,其实Google提供的类库比MS要多些,Ms只提供了Jquery以及MsAjax。
841 0
|
2月前
|
缓存 前端开发 JavaScript
适合阿里云CDN分发的文件类型有哪些?
静态文件如网页、图片、视频等适合CDN分发,可提升加载速度,减轻源站压力。动态、私有或频繁变更内容则不适合。合理选择资源包,助力高效上云。
|
2月前
|
CDN
阿里云CDN计费价格如何收费的?一文看懂
阿里云CDN计费包含基础费用与增值服务。基础费用可选按流量、带宽峰值或月结95带宽计费,默认按流量计费;增值服务如HTTPS、QUIC、WAF、实时日志等按使用量收费,不使用不计费。支持资源包抵扣,详情参考官方文档。
464 10
|
2月前
|
缓存 监控 安全
如何设置阿里云CDN的流量阈值以避免超额费用?
在信息爆炸时代,阿里云CDN助力网站加速。合理设置CDN阈值可提升性能、节省带宽、增强安全。本文详解阈值配置步骤与监控优化,助你高效利用资源。无账号者可通过翼龙云上云,享技术支持与优惠。
|
2月前
|
缓存 前端开发 JavaScript
有哪些文件适合阿里云CDN分发?
静态、高频访问且对加载速度要求高的文件(如网页、图片、视频、下载文件)适合CDN加速,可提升性能与性价比;动态内容、私有数据、频繁更新或敏感资源则不宜使用。合理选择分发策略,优化体验并降低成本。
|
2月前
|
CDN
怎么调整阿里云CDN配额?
阿里云CDN助力网站加速,配额管理关乎性能与成本。本文详解带宽、流量、请求数配额定义,指导用户查看及申请提升配额,并解析费用影响与优化策略,助您合理规划资源,降本增效。
|
2月前
|
域名解析 缓存 监控
阿里云渠道商:如何排查阿里云CDN访问问题?
排查阿里云CDN访问问题需分步诊断:先检查DNS解析与CDN基础配置,再根据访问慢、内容未更新或50x错误等现象定位原因,结合ping、tracert及阿里云实时日志、节点检测等工具深度分析。掌握此流程,快速解决异常。
|
2月前
|
边缘计算 缓存 双11
阿里云渠道商:什么时候应该使用阿里云 CDN 预热?
阿里云CDN预热可将资源提前分发至边缘节点,降低首字节时间50%以上,减轻源站压力。适用于大促活动、大文件发布、定期更新、突发流量及APP资源更新等场景,提升访问速度与稳定性。首次访问求快用预热,内容更新生效用刷新。
|
2月前
|
CDN
如何切换阿里云CDN的加速区域?
本文介绍如何通过阿里云CDN控制台切换加速区域,涵盖登录、域名管理、修改加速范围及注意事项,助企业轻松实现从中国大陆到全球的CDN加速调整,优化海外用户访问体验。