Asp.Net MVC 页面代码压缩筛选器

首先定义以下筛选器,用于代码压缩。

/*页面压缩 筛选器*/public class WhiteSpaceFilter : Stream{private Stream _shrink;private Func<string, string> _filter;public WhiteSpaceFilter(Stream shrink, Func<string, string> filter){_shrink = shrink;_filter = filter;}public override bool CanRead { get { return true; } }public override bool CanSeek { get { return true; } }public override bool CanWrite { get { return true; } }public override void Flush() { _shrink.Flush(); }public override long Length { get { return 0; } }public override long Position { get; set; }public override int Read(byte[] buffer, int offset, int count){return _shrink.Read(buffer, offset, count);}public override long Seek(long offset, SeekOrigin origin){return _shrink.Seek(offset, origin);}public override void SetLength(long value){_shrink.SetLength(value);}public override void Close(){_shrink.Close();}public override void Write(byte[] buffer, int offset, int count){// capture the data and convert to stringbyte[] data = new byte[count];Buffer.BlockCopy(buffer, offset, data, 0, count);string s = Encoding.GetEncoding("gb2312").GetString(buffer);// filter the strings = _filter(s);// write the data to streambyte[] outdata = Encoding.GetEncoding("gb2312").GetBytes(s);_shrink.Write(outdata, 0, outdata.GetLength(0));}}public class WhitespaceFilterAttribute : ActionFilterAttribute{public override void OnActionExecuting(ActionExecutingContext filterContext){var request = filterContext.HttpContext.Request;var response = filterContext.HttpContext.Response;response.Filter = new WhiteSpaceFilter(response.Filter, s =>{s = Regex.Replace(s, @"\s+(?=<)|\s+$|(?<=>)\s+|<!--.+-->|[ ]+//.+\n|/\*.+\*/|\n", "");//single-line doctype must be preservedvar firstEndBracketPosition = s.IndexOf(">");if (firstEndBracketPosition >= 0){s = s.Remove(firstEndBracketPosition, 1);s = s.Insert(firstEndBracketPosition, ">");}return s;});}}/*页面压缩 筛选器 end*/

在要压缩页面的action上使用。

[WhitespaceFilter]
public ActionResult home()
{return View();
}

我们可以自行修改替换规则,以达到最优化。

s = Regex.Replace(s, @"\s+(?=<)|\s+$|(?<=>)\s+|<!--.+-->|[ ]+//.+\n|/\*.+\*/|\n", "");

转载于:https://www.cnblogs.com/huhangfei/p/5000735.html

Asp.Net MVC 页面代码压缩筛选器-自定义删除无效内容相关推荐

  1. 利用ASP.NET MVC 的默认类型绑定器---将Jquery datatables中的数据强类型绑定到实体类中

    背景描述: 本文参考资料:https://blog.csdn.net/honantic/article/details/45913403 阅读了上述博文后对我产生了启发,在ASP.NET MVC 5中 ...

  2. 精化集ASP.NET AJAX与ASP.NET MVC分类第二轮筛选结果

    以下是包同学导给我的清单.老赵的第二轮把关很严,杀了几乎99%的文章.不过似乎有少部分并没有经过我的手,可能是其他同学转过来的吧.第三轮老赵依旧会严格把关,肯定也会杀更多(包括通过其他同学第二轮的)文 ...

  3. 使用Filter跟踪Asp.net MVC页面加载(转)

    转载地址:http://www.cnblogs.com/JustRun1983/p/4027929.html 最近,客户一直反馈系统使用慢,有时候能够指出具体是哪个页面,有时候又只是笼统地反馈慢.这种 ...

  4. 各种页面刷新代码大全,asp/javascript刷新页面代码

    页面自动刷新代码大全,基本上所有要求自动刷新页面的代码都有,大家可以自由发挥做出完美的页面. 1) 10表示间隔10秒刷新一次 2) <script> window.location.re ...

  5. mvc跳转html,ASP.NET MVC页面重定向简单介绍

    在asp.net中页面重定向:Server.Execute("m2.aspx"); 服务器保存此页转向前的数据后,使页面转向到m2.aspx执行, 再返回本页继续执行.再将三者结果 ...

  6. asp.net mvc 页面传值的方法总结

    转自:http://msprogrammer.serviciipeweb.ro/2012/01/15/usual-methods-to-transfer-data-from-page-to-page- ...

  7. 精通ASP.NET MVC ——URL和Ajax辅助器方法

    Ajax(或者,如果你愿意,也可以称为AJAX)是 Asynchronous JavaScripts and XML(异步JavaScripts与XML).其XML部分并不如它往常那样意义重大,但是异 ...

  8. 利用ResultFilter实现asp.net mvc 页面静态化

    为了提高网站性能.和网站的负载能力,页面静态化是一种有效的方式,这里对于asp.net mvc3 构架下的网站,提供一种个人认为比较好的静态话方式. 实现原理是通过mvc提供的过滤器扩展点实现页面内容 ...

  9. mvc html绑定变量,c# – Asp.Net MVC 3使用变量对象进行自定义模型绑定

    我的实体:( PersonModel应该有一个AddressOne或AddressTwo类型的地址(可能还有其他),所以PersonModel有一个地址字段的对象类型.) public class P ...

最新文章

  1. 判断输入是否为中文的函数
  2. 2021年春季学期教学记录
  3. 前端图片有时候能显示有时候不显示_如何自动搞定全站图片的alt属性?
  4. Odoo (OpenERP/TinyERP)-10.0 (Debian 8)
  5. python中调用是什么意思_在Python中调用函数的含义?
  6. CentOS4.4下安装jdk1.5
  7. php 定义一个json对象,PHP中使用json数据格式定义字面量对象的方法
  8. Quadtrees UVA - 297
  9. javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据...
  10. 小程序优化的20中策略
  11. 面试感悟----一名3年工作经验的程序员应该具备的技能--读后感
  12. android按键精灵 释放内存,类人猿按键精灵安卓内存基础教程
  13. 钢铁雄心II HOI2 作弊码合辑
  14. SnowNLP——SnowNLP是什么及SnowNLP的使用示例
  15. Ubuntu12.04 64位 无法运行32位程序 吉林大学校园网客户端Drcom DrClient
  16. Newcoder lxh裁木棍 (不开long double见祖宗 ceil前不加long long也去
  17. 计算机科学导论实验报告,上海电力学院计算机导论实验报告.docx
  18. 为什么uzi排到古手羽就秒_Uzi排到古手羽秒退引热议?“网友发表看法,弹幕疑似给出答案”...
  19. android视频自动旋转,Android 使用PLDroidPlayer播放网络视频 根据视频角度自动旋转...
  20. JS处理时间格式国际标准化的方法

热门文章

  1. Python3 基础学习笔记 C05【字典】
  2. 【LeetCode-SQL每日一题】——183. 从不订购的客户
  3. 利用计算机可以对物体的运动情况,2018-2019学年高中物理第05章曲线运动专题5.3实验:研究平抛运动情景分组训练新人教版必修2.docx...
  4. CCNA-第七篇-思科私有路由协议-EIGRP-初级
  5. priority_queue(优先队列)的简单构造与用法
  6. CS231n(1):图片分类笔记与KNN编程作业
  7. ubuntu18.04下安装grafana6和简单使用
  8. php函数汉语,PHP汉字截取函数:UTF-8、GB2312双支持
  9. linux信号值头文件位置,Linux C 信号处理机制
  10. bootstrap-table 新增可编辑行_现代Web开发堆栈工具DevExtreme 新增Gantt组件,助力项目管理...