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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于java的数据结构学习——数组实现的队列和循环队列及性能对比

队列 Queue 队列也是一种线性结构相比数组&#xff0c;队列对应的操作是数组的子集只能从一端&#xff08;队尾&#xff09;添加元素&#xff0c;只能从另一端&#xff08;队首&#xff09;取出元素队列是一种先进先出的数据结构 队列的实现及复杂度分析 Queue<E> voi…

新手如何准确的控制油门

日常练车还不赖&#xff0c;可是一换车就容易加大油门儿&#xff0c;有啥子办法能美好的扼制油呢?和调的坐位有关系吗? 答&#xff1a;油门儿跟刹车被视为交通工具扼制的魂灵。交通工具引擎发动机的油门儿&#xff0c;通常是靠踏板来扼制的&#xff0c;也称加速踏板&#xff…

vue 项目:文件夹 结构 、配置详解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 项目配置 首先&#xff0c;在确定好使用的框架和组件库后&#xff0c;先要大致了解它们&#xff0c;做到文档基本熟悉。本次开发使用…

hdoj2553(N皇后问题)

Problem : 2553 ( N皇后问题 ) Judge Status : Accepted RunId : 2619754 Language : G Author : huwenbiao Code Render Status : Rendered By HDOJ G Code Render Version 0.01 Beta/***************************************************************\ *Author:Hu…

基于java的数据结构学习——数组实现的栈以及简单应用C++实现

基于java的数据结构学习——数组实现的栈以及简单应用的 C 实现 源码&#xff1a; // // Created by PC-Saw on 2019/1/3. //#ifndef DATA_STRUCTURE_ARRAYSTACK_H #define DATA_STRUCTURE_ARRAYSTACK_H#include "Stack.h" #include "MyArray.h"template&…

女性开车5大安全驾车好习惯 为您支招

一些女性车主技术不够熟练&#xff0c;紧急处理能力差&#xff0c;开车过程中需要注意更多的细节。养成一些好习惯&#xff0c;对于女性车主来说&#xff0c;开车的安全度会大大提高。 ● 车窗上不挂毛绒玩具 汽车是生活的一部分空间&#xff0c;许多女性车主都喜欢把这部分空间…

DIV 半透明层、 CSS实现网页 背景半透明

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 DIV半透明实现&#xff0c;使用CSS实现DIV成半透明效果&#xff0c;CSS实现层与背景半透明效果。 一、DIV CSS半透明基础介绍 - …

node 安装 webpack

首先要安装 Node.js&#xff0c; Node.js 自带了软件包管理器 npm&#xff0c;Webpack 需要 Node.js v0.6 以上支持&#xff0c;建议使用最新版 Node.js。 用 npm 安装 Webpack&#xff1a; $ npm install webpack -g此时 Webpack 已经安装到了全局环境下&#xff0c;可以通过命…

Thinking in C++遇到的函数指针及应用

// // Created by PC-Saw on 2019/1/24. //#include <iostream>#define TEST 2/* 1. */ typedef int* (*(*fp1)(int))[10]; // 首先是一个函数指针&#xff0c;接受一个int型参数&#xff0c;返回一个指向10个int指针数组的指针 /* 2. */ typedef i…

html 标签内背景图片自适应 div 大小

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 只需通过css设置background-size属性为contain&#xff0c;即 background-size:contain 注意&#xff1a;一定要在先设置background之…

Code Project精彩系列(转)

Code Project精彩系列&#xff08;转&#xff09; Applications Crafting a C# forms Editor From scratch http://www.codeproject.com/csharp/SharpFormEditorDemo.asp 建立一个类似C#的环境, 实现控件拖拉&#xff0c;属性 Packet Capture and Analayzer 网络封包截获 http…

加速时如何换挡

加速时如何换挡&#xff0c;您知道吗?为了使换挡过程顺利进行&#xff0c;变速器内齿轮平稳啮合&#xff0c;必须掌握好发动机转速&#xff0c;在适当时机推动变速杆操纵齿轮啮合。为此&#xff0c;要通过反复练习&#xff0c;一边踩踏油门踏板&#xff0c;一边听发动机运转声…

C++ 学习杂谈:sizeof和sizeof(string)的问题

最近遇到一个令我困惑的问题&#xff0c;就是 sizeof&#xff08;string&#xff09;的值&#xff0c;之前在vs2010上测得是固定28&#xff0c;最近在用CLion&#xff0c;上面测得是4&#xff0c;出现了不一样的结果&#xff0c;我又在vs2013上试了一下&#xff0c;结果又不一样…

vue 项目 引用(外部) js、css

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我的工程结构&#xff1a; 1. 引入 css 有 2 种方式&#xff1a; 方式 1 <script type"text/javascript">import .…

FAQ:Container Classes篇

1、Why should I use container classes rather than simple arrays?&#xff08;为什么应该使用容器类而不是简单的数组&#xff1f;&#xff09; In terms of time and space, a contiguous array of any kind is just about the optimal construct for accessing a sequen…

自动挡车挡位的基本知识介绍

一般来说&#xff0c;自动档汽车的自动变速器的档位分为P、R、N、D、2 (或S)、L(或1)等。下面分别详细介绍如下&#xff1a; P (Parking) 停车档&#xff0c;或称泊车档&#xff1a; P用作停车之用&#xff0c;它是利用机械装置去锁紧汽车的转动部分&#xff0c;使汽车不能移动…

Java 强引用、弱引用、软引用、虚引用

1、强引用&#xff08;StrongReference&#xff09; 强引用是使用最普遍的引用。如果一个对象具有强引用&#xff0c;那垃圾回收器绝不会回收它。如下&#xff1a; Object onew Object(); // 强引用 当内存空间不足&#xff0c;Java虚拟机宁愿抛出OutOfMemoryError错误…

解决:(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8082 -j DNAT --to-destin

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 用 docker 部署一个前端工程&#xff0c;run 后容器有了&#xff0c;却不是运行状态&#xff0c;是创建状态&#xff0c;于是我执行 …

在DOS命令行执行MYSQL语句

最近有个工作需要从MSSQL库中取数据然后导入SQL 2005。由于之前曾经做过利用BCP导入SQL&#xff0c;因此想借助这个工具实现此功能。 在探索过程中&#xff0c;好像发现MYSQL不能想SQL那样有OSSQL这样的外部命令。因此想到利用MYSQL执行文件内容的功能来生成导出数据。&#xf…

无损压缩——Huffman编码

最近项目中涉及到人脸关键点中神经网络的压缩&#xff0c;采用了性能较好的哈夫曼编码进行。 源码地址&#xff1a;https://github.com/believeszw/HuffmanCompress 1 引言 哈夫曼&#xff08;Huffman&#xff09;编码算法是基于二叉树构建编码压缩结构的&#xff0c;它是数据…