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.pswp.cn/news/448151.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448151.shtml
英文地址,請注明出處:http://en.pswp.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;它是數據…