某墙尼妹,用个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;
        }

 

目录
打赏
0
0
0
0
1
分享
相关文章
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。
777 0
|
14天前
|
阿里云CDN边缘脚本示例实现/?p123重定向/p/123.html
本文介绍了如何通过EdgeScript实现URL重定向,将`http://www.example.com/?p123`重定向到`http://www.example.com/p/123.html`。使用捕获请求URI中的参数并进行重写,具体代码和内置变量参考阿里云CDN开发者文档。示例代码展示了关键的实现步骤。
30 8
|
1月前
|
CDN
阿里云CDN收费标准,不同计费模式价格表(基础服务费和增值服务费用整理)
阿里云CDN的计费包括基础费用和增值费用。基础费用有三种计费方式:按流量、带宽峰值和月结95带宽峰值,默认按流量计费。增值服务如HTTPS、QUIC、WAF和实时日志等,使用才收费。详细价格和规则请参考阿里云官网。
122 12
|
1月前
|
CDN
阿里云CDN怎么收费?看这一篇就够了,CDN不同计费模式收费价格全解析
阿里云CDN的费用由基础费用和增值费用组成。基础费用有三种计费方式:按流量、按带宽峰值和月结95带宽峰值,默认为按流量计费,价格根据使用量阶梯递减。增值费用包括静态HTTPS请求、QUIC请求等,按实际使用量收费,不使用不收费。具体收费标准和详细规则可参考阿里云官方页面。
阿里云国际站注册教程:阿里云cdn加速怎样
通过阿里云CDN加速,用户可以实现网站内容的快速加载,提升用户体验,同时减轻源站服务器的压力,提高网站的访问速度和稳定性
阿里云CDN边缘脚本实现+字符转义%2B
对象存储OSS中,文件名包含+字符时,请求URL未转义会导致404错误。解决方法是将URL中的+字符转义为%2B,或通过CDN/DCDN边缘脚本自动转义。示例脚本:若URI包含+,则替换为%2B。
92 10
将Certbot/ACME.sh自动化申请的证书自动部署到阿里云CDN
本文介绍了阿里云 CDN SSL 证书自动更新工具,定期检查证书有效期,使用Let's Encrypt 等工具签发的证书自动更新至阿里云 CDN,支持 Docker 及 .NET 8 部署,简化证书管理流程。
阿里云CDN遇到攻击?别慌,教你如何应对!
阿里云CDN遇到攻击?别慌,教你如何应对!

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等