如何在 asp.net MVC 中压缩内容?

2023-12-30

如何压缩 asp.net mvc 应用程序发送的输出?


这是我使用的(截至目前):

using  System.IO.Compression;

public class CompressAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

        var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
        if (string.IsNullOrEmpty(encodingsAccepted)) return;

        encodingsAccepted = encodingsAccepted.ToLowerInvariant();
        var response = filterContext.HttpContext.Response;

        if (encodingsAccepted.Contains("deflate"))
        {
            response.AppendHeader("Content-encoding", "deflate");
            response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
        }
        else if (encodingsAccepted.Contains("gzip"))
        {
            response.AppendHeader("Content-encoding", "gzip");
            response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
        }
    }
}

在控制器中的用法:

[Compress]
public class BookingController : BaseController
{...}

还有其他变体,但这个效果很好。 (顺便说一句,我在 BaseController 上使用 [压缩] 属性来保存整个项目的重复,而上面是在逐个控制器的基础上进行的。

[Edit]如上段所述。为了简化使用,您还可以包括[Compress]BaseController 本身中的 oneshot,因此,每个继承的子控制器默认都会访问该功能:

[Compress]
public class BaseController : Controller
{...}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 asp.net MVC 中压缩内容? 的相关文章

随机推荐

  • HomePresenter 的未初始化常量

    我正在尝试实现一个 HomePresenter 在我的 Pages 控制器的 home 操作中使用 app controllers pages controller rb class PagesController lt Applicati
  • 将数据帧转换为特定格式的频率表

    我有一个 data frame 我正在尝试创建一个频率表来显示每行值的频率 所以我从这样的事情开始 d lt data frame a c 1 2 3 b c 3 4 5 c c 1 2 5 看起来像这样 a b c 1 3 1 2 4 2
  • ViewGroup.resetResolvedTextDirection 中的 Android StackOverflowError

    我刚刚去 android 市场发布我的应用程序的更新 并注意到现有安装报告了一些新错误 虽然我可以理解 并尝试做一些事情 其中的大多数 但这个让我相当困惑 java lang StackOverflowError at android vi
  • 将单词添加到用户词典中并从词典中检索它们

    我的应用程序中几乎没有编辑文本 用户可以在其中输入公司名称 客户名称 目的 诸如此类的内容 现在我想以编程方式将这些单词添加到字典中 因此他们不必每次都重新输入整个单词 相反 字典应该在他们开始输入时建议单词 我在网上搜索了同样的内容 得到
  • pyinstaller 2.0 - 如何为 Windows exe 文件添加描述?

    如何向单个文件 exe 添加版本 版权 文件描述等描述 python pyinstaller py F w i favicon ico C Projekte Eclipse MyApp app pyw version file 版本信息 t
  • 如何忽略 Jacoco 的 lombok.@UtilityClass?

    我用过lombok UtilityClass to 生成私有构造函数 使班级最终 将实用程序类中的所有字段设为静态 并且 Jacoco 不涵盖 Lombok 生成的代码 如果我显式定义一个私有构造函数 Jacoco 可以识别它 因此 有任何
  • MSMPI 就地 MPI_Allreduce 不适用于 MinGW-w64 gfortran

    我正在尝试使用就地MPI Allreduce结合MinGW w64 gfortran MSYS64提供的版本9 2 和Microsoft MPI 版本10 call MPI Allreduce MPI IN PLACE srcdst n M
  • 如果我在开发代码中使用 Smart::Comments 应该注意什么?

    我知道 Smart Comments 不应在生产代码中使用 因为它是源过滤器 然而 我一直在使用Smart Comments http search cpan org perldoc Smart Comments在我的开发代码中 然后在将代
  • 我们什么时候需要 IOptions?

    我正在 Net Core 中学习 DI 但我不知道使用 DI 的好处IOptions 为什么我们需要IOptions如果我们可以没有它吗 With IOptions interface IService void Print string
  • TypeORM 上传和服务(下载)文件

    介绍 在我的项目中 我尝试将文件存储在 MySQL 中 用户可以上传文件 html WEB APP 之后用户就有了上传文件的列表 html WEB APP 用户可以通过Link下载文件 在后端 我使用一个node js TypeORM 项目
  • 页面操作和浏览器操作有什么区别?

    我做了一个浏览器操作 但我只是尝试测试页面操作 按钮放置在同一位置 但页面操作按钮无法单击 图标呈灰色 我认为页面操作按钮位于地址栏上 而不是工具栏中 为什么它位于同一个地方 My browser action button My page
  • 合并不同目录级别的 git 存储库

    我有一个存储库 B 其内容需要驻留在 A src B 中 A 的子目录中 我希望最终得到一个存储库 A 其中包含 A 和 B 的提交历史记录 网络上的其他解决方案似乎向我展示了如何在单独的子树中保持树完整 或合并具有相同目录结构的存储库的选
  • 在 Pandas 数据帧上使用 groupby 按财政年度进行分组

    我有一个数据框 with a 日期时间64称为 DT 的列 是否可以使用groupby按财政年度从4月1日到3月31日进行分组 例如 Date PE LOW 2010 04 01 15 44 2011 03 31 16 8 2011 04
  • 下载 Excel 文件

    我之前曾问过这个问题 但在启动文件下载时仍然遇到困难 var fileName ExcelData xlsx var file new FileInfo fileName using var package new OfficeOpenXm
  • 撤销权限 android.permission.CAMERA

    我收到错误revoked permission android permission CAMERA 我在清单上使用了相机权限 private void dispatchTakePictureIntent int actionCode Int
  • 程序崩溃,但调试诊断说这是第一次机会异常,对吗?

    也许这是正常情况 但我很困惑 我正在从 Visual Studio 运行我的 C 调试应用程序 DebugDiag 设置为自动附加到进程 我有一条规则从该 应用程序收集故障转储 并且该规则定义未配置的第一次机会异常的操作应为 无 但是当应用
  • 如何将 EL 变量传递给 JavaScript

    我有一个变量 bean name 我如何将它传递给 JavaScript 变量 我试过了var name bean name and var name bean name 但它不起作用 我的想法是将其放入隐藏输入中 就像隐藏中一样
  • Phonegap iOS:将图像下载到照片库

    是否可以下载文件 图像 并将其保存在照片库中 我知道这一点download http docs phonegap com en 2 3 0 cordova file file md html FileTransfer download方法
  • 获取整数的第 n 位

    我得到一个大整数a 和一个 相对较小的 整数n 最快的获取方式是什么n二进制表示的第 th 位 从右起 a使用原生Python 将位移到最后一个位置 屏蔽其他所有内容 bit a gt gt n 1 这假设这些位以通常的方式索引 即最低有效
  • 如何在 asp.net MVC 中压缩内容?

    如何压缩 asp net mvc 应用程序发送的输出 这是我使用的 截至目前 using System IO Compression public class CompressAttribute ActionFilterAttribute