ASP.NET MVC 3 网站优化总结(六)压缩 HTML

压缩 html 可以去除代码中无用的空格等,这样可提高网站的加载速度并节省带宽。今天就让我们看看在 ASP.NET MVC 3 怎么实现 html 压缩,我们可通过实现 ActionFilter 来完成 html 的压缩。

其实我们在 ASP.NET MVC 3 网站优化总结(一) 使用 Gzip 压缩这篇文章中使用的就是这种方法,主要看看实现的 FilterAttribute 类:

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+", "");

            //single-line doctype must be preserved
            var firstEndBracketPosition = s.IndexOf(">");
            if (firstEndBracketPosition >= 0)
            {
                s = s.Remove(firstEndBracketPosition, 1);
                s = s.Insert(firstEndBracketPosition, ">");
            }
            return s;
        });
    }
}

使用时在 Action 方法上添加 Filter 属性即可,如下:

[WhitespaceFilter]
public ActionResult Index(string id)
{
    return View();
}

我主要修改了下作者使用的正则,因为原正则会将<pre></pre>中的空格也进行替换,并指定编码为 UTF-8。

这样就在 ASP.NET MVC 3 中实现了 html 的压缩,大家可以下载 WhiteSpaceFilter.rar 类来自己试试!

时间: 2024-10-13 00:51:54

ASP.NET MVC 3 网站优化总结(六)压缩 HTML的相关文章

ASP.NET MVC 3 网站优化总结(三)Specify Vary: Accept-Encoding header

继续进行 ASP.NET MVC 3 网站优化工作,使用 Google Page 检测发现提示 You should Specify Vary: Accept-Encoding header,The following publicly cacheable, compressible resources should have a "Vary: Accept-Encoding" header. 相信很多人遇到过这个问题,它是什么意思呢?网上找到的资料为: 原来对CSS和JS文件开启Gz

ASP.NET MVC 3 网站优化总结(一) 使用 Gzip 压缩

网站开启 Gzip 压缩的好处相信很多人都已经清楚,这样做可以提高网站的性能.那么为什么很多网站没有开启 Gzip 压缩功能呢?原因有4点:防病毒软件.浏览器 bug.网站代理和服务器未配置. 使用 IE6 时不会发送 Accept-Encoding 请求头,这样就不支持 Gzip 压缩功能了,所以这里号召大家使用 Google Chrome.在 ASP.NET MVC 3 中我们通过实现 ActionFilter 来实现,如下: public class CompressAttribute :

ASP.NET MVC实现网站验证码功能

转:http://www.cnblogs.com/liuxiaoji/p/4920382.html 网站添加验证码,主要为防止机器人程序批量注册,或对特定的注册用户用特定程序暴力破解方式,以进行不断的登录.灌水等危害网站的操作.验证码被广泛应用在注册.登录.留言等提交信息到服务器端处理的页面中. 在ASP.NET网站中应用验证码是很容易的,网上有很多的解决方案.最近在做一个OA项目,因系统采用的ASP.NET MVC框架,同样在登录页中需用到验证码,故需将原来在ASP.NET网站中使用的验证码移

ASP.NET MVC - 发布网站

原文地址:http://www.w3school.com.cn/aspnet/mvc_publish.asp 学习如何在不使用 Visual Web Developer 的情况下发布 MVC 应用程序. 在不使用  Visual Web Developer 的情况下发布您的应用程序 通过在 WebMatrix.Visual Web Developer 或 Visual Studio 中使用发布命令,可以将 ASP.NET MVC 应用程序发布到远程服务器. 该功能会复制所有应用程序文件.控制器.

网站优化:六个让SEO新手致命的误区

新手在做网站优化的时候,由于知识的缺乏性,难免会犯下或多或少的错误,很多人或许认为SEO是一项门槛很低的技术,但是,走了弯路,很可能会直接导致网站优化效果不理想,或者起到相反的效果.那么,SEO新手应该避免的误区有哪些呢? SEO误区一:关键词做百度竞价的数量越多关键词优化难度就越大 其实单纯靠付费推广网站的数量进行判断关键词优化难度是不太准确的,因为很多付费推广的关键词事实上优化难度并不大,有的关键词付费推广的很多,但是首页依然都是一些网站的子页面,说明竞争并不是很激烈.所以付费推广数量只能做

ASP.NET MVC 4使用Bundle的打包压缩JS/CSS

打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS文件案中空白.批注及修改JavaScript内部函数.变量名称的压缩手法,能有效缩小文件案体积,提高传输效率,提供使用者更流畅的浏览体验. 在ASP.NET MVC 4中可以使用BundleTable捆绑多个css文件和js文件,以提高网络加载速度和页面解析速度.更为重要的是通过捆绑可以解决IE浏览

Asp.net MVC在View里动态捆绑压缩引用的js

前言 Asp.net MVC 4以上版本多了BundleConfig.RegisterBundles方法,可以把要捆绑的脚本或样式进行捆绑压缩,以减少客户端的请求次数从而提高了客户端的访问速度. 问题 但世上懒人的数量还是很多,我也是一个,觉得这个方法还不够方便.在实际中,一些小的页面或独立页面,开了一些开源的js库之后,js文件比较多,而且每个页面引用的js又不太一样,如果能不在BundleConfig描述如何捆绑,像传统一样把js拉过来就能自动达到捆绑后的效果,是懒人多想要的结果.正是朝着这

asp.net MVC 切换网站主题

首先要有一些定义后的CSS文件,本例是用Bootstrap作为前端框架,可以从http://bootswatch.com/网站上下载一些主题文件,也就是一些定义好的Bootstap.css的文件. 然后将这些文件放到网站中Content文件夹Themes 下,目录组织结构如图: 二.然后在网站根目录新建一个文件夹为Helper,在下面建立一个Bootstrap.cs文件. public class Bootstrap { public const string BundleBase = "~/C

.net core Asp.net Mvc Ef 网站搭建 vs2017 1)

1)开发环境搭建 首先下载安装vs2017  地址 :https://www.visualstudio.com/zh-hans/downloads/ 安装勾选几项如下图 ,注意点在单个组件时.net core 运行时一定要勾上,很多人都没勾结果新增不了.net core 项目 2)开发 1.新增.net core mvc asp.net 2.新增Ef项目 首先通过nuget 安装三个依赖项 Install-Package Microsoft.EntityFrameworkCore.SqlServ