zoukankan      html  css  js  c++  java
  • ASP.NET MVC3 Web应用程序中启用GZip压缩示例

    http://www.mzwu.com/article.asp?id=3284

    自定义一个筛选器,继承于GZipAttribute:

    using System;
    using System.IO.Compression;
    using System.Web.Mvc;

    namespace MvcApplication1
    {
        public class GZipAttribute : ActionFilterAttribute
        {
            public override void OnActionExecuting(ActionExecutingContext context)
            {
                var acceptEncoding = context.HttpContext.Request.Headers["Accept-Encoding"];
                if (!string.IsNullOrEmpty(acceptEncoding))
                {
                    acceptEncoding = acceptEncoding.ToLower();
                    var response = context.HttpContext.Response;
                    if (acceptEncoding.Contains("gzip"))
                    {
                        response.AppendHeader("Content-Encoding", "gzip");
                        response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
                    }
                    else if (acceptEncoding.Contains("deflate"))
                    {
                        response.AppendHeader("Content-Encoding", "deflate");
                        response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
                    }
                }
            }
        }
    }

    方法一:在需要GZip的Action上使用GZipAttribute

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;

    namespace MvcApplication1.Controllers
    {
        public class HomeController : Controller
        {
            [GZip]
            public ActionResult Index()
            {
                ViewBag.Message = "欢迎使用 ASP.NET MVC!";

                return View();
            }

            public ActionResult About()
            {
                return View();
            }
        }
    }

    方法二:使用全局过滤器(MVC3+支持)

    Global.asax.cs:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;

    namespace MvcApplication1
    {
        public class MvcApplication : System.Web.HttpApplication
        {
            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new HandleErrorAttribute());
                filters.Add(new GZipAttribute());
            }

            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

                routes.MapRoute(
                    "Default", // 路由名称
                    "{controller}/{action}/{id}", // 带有参数的 URL
                    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
                );

            }

            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();

                RegisterGlobalFilters(GlobalFilters.Filters);
                RegisterRoutes(RouteTable.Routes);
            }
        }
    }

  • 相关阅读:
    HLS视频直播
    CocoaPods版本升级
    项目管理:CocoaPods建立私有仓库
    cocospod 安装和使用
    sqlite加密
    socket的心跳包机制
    iOS开发必备HUD(透明指示层)
    iOS 第一次安装应用,拒绝相机调用,页面卡死的解决方案
    UINavigationController侧滑滑动返回 卡死问题
    第四周学习进度
  • 原文地址:https://www.cnblogs.com/BluceLee/p/4062556.html
Copyright © 2011-2022 走看看