某墙尼妹,用个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。
754 0
|
2月前
|
域名解析 网络协议 安全
阿里云CDN
本文介绍阿里云CDN产品中涉及的基本概念,便于您更准确地理解和使用CDN产品。
90 5
|
2月前
|
域名解析 网络协议 CDN
网站接入阿里云CDN实现域名加速全流程
阿小云网站已通过ICP备案在广州节点上线,但为提升全国用户访问速度,计划接入CDN。以下是4步CDN接入教程:1) 开通阿里云CDN服务;2) 添加加速域名;3) 使用DNS解析验证域名归属权;4) 配置CNAME实现域名与CDN节点关联。详细指南见阿里云CDN官方文档。
|
2月前
|
弹性计算 缓存 安全
【阿里云弹性计算】阿里云ECS与CDN结合:构建高性能全球内容分发网络
【5月更文挑战第26天】阿里云ECS与CDN结合打造高性能全球内容分发网络,通过ECS的弹性伸缩和安全可靠性,配合CDN的全球覆盖、高可用性及安全防护,提升访问速度,减轻服务器压力,优化数据传输。以WordPress为例,通过配置CDN域名和ECS,实现高效内容分发,提高系统扩展性和稳定性。此解决方案满足用户对访问速度和稳定性的高要求,为企业提供优质的云计算体验。
130 0
|
2月前
|
缓存 网络协议 Serverless
阿里云CDN简介和使用流程
本文档介绍了如何在阿里云上配置和使用CDN服务。首先,需要注册并实名认证阿里云账号,然后购买CDN服务。接着,添加要加速的域名,通过CDN控制台和阿里云云解析DNS进行配置,并验证CNAME设置是否生效。之后,配置源站信息,可以选择OSS域名、IP、源站域名或函数计算域名作为源站。最后,设置缓存规则,如缓存过期时间、状态码过期时间、自定义HTTP响应头等,以优化资源访问效率。
阿里云CDN简介和使用流程
|
11月前
|
弹性计算 缓存 运维
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(三)
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(三)
166 0
|
2月前
|
缓存 边缘计算 网络协议
阿里云CDN介绍
阿里云CDN介绍
38 0
|
2月前
|
安全 网络安全 CDN
阿里云CDN HTTPS 证书配置流程
阿里云CDN HTTPS 证书配置流程
379 1
|
2月前
|
弹性计算 Ubuntu 网络协议
阿里云CDN功能Quick Start
本文通过在国外Region ECS创建ECS,通过ECS部署应用,然后使用CDN加速部署应用,全链路测试体验阿里云CDN通过IP加速服务的功能。