如何在ASP.Net Core中使用Save-Data请求标头

HTTP标头包含存储为在服务器和客户端之间传递的名称/值对的数据。 这些标头与请求或响应一起传递。 保存数据标头是“客户端提示”请求标头,可在Chrome和Opera Web浏览器中使用。

通过“保存数据”请求标头,可以为在Web浏览器中打开数据保存模式的用户构建更轻便,更快速的应用程序。 如果启用了数据保存模式,则Web浏览器将发送一个名为Save-Data的HTTP请求标头,其值为“ on”。 您可以在Chrome中启用此扩展程序,以使Google服务器可以在页面呈现之前对其进行压缩。 请注意,您还可以从设置菜单启用Android中的数据保存模式。

[编程艺术发展Swift。 InfoWorld可以帮助您导航正在运行的东西和正在运行的东西 | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]

Save-Data是一项出色的性能优化技巧,您可以利用它来交付更快,更轻便的Web应用程序-通常是通过将高分辨率图像替换为低分辨率版本或完全省去不必要的图像。 本文讨论了如何在ASP.Net Core应用程序中使用Save-Data请求标头。

创建一个ASP.Net Core Web应用程序项目

首先,让我们创建一个ASP.Net Core项目。 如果您的系统已启动并运行Visual Studio 2017,请按照以下步骤在Visual Studio中创建一个新的ASP.Net Core Web应用程序项目。

  1. 启动Visual Studio 2017 IDE。
  2. 单击文件>新建>项目。
  3. 从显示的模板列表中选择“ ASP.Net Core Web应用程序(.Net Core)”。
  4. 指定项目的名称。
  5. 单击确定保存项目。
  6. 接下来显示一个新窗口“ New .Net Core Web Application…”。
  7. 选择.Net Core作为运行时,并从顶部的下拉列表中选择ASP.Net Core 2.2(或更高版本)。
  8. 选择API作为项目模板
  9. 确保未选中“启用Docker支持”和“配置HTTPS”复选框,因为我们此处将不再使用这些功能。
  10. 确保选择“无身份验证”,因为我们也不会使用身份验证。
  11. 单击确定。

按照这些步骤将在Visual Studio中创建一个新的ASP.Net Core项目。 在下一节中,我们将研究如何在刚刚创建的ASP.Net项目中使用Save-Data标头。

在ASP.Net Core中创建保存数据标头中间件

现在,我们将构建一个中间件,该中间件将检查是否启用了Save-Data标头。 如果启用了保存数据,则中间件将发送优化的响应。 右键单击您先前创建的项目,然后选择“添加->类…”以创建一个新的C#代码文件。 将此文件命名为SaveDataMiddleware.cs。 接下来,在该文件中编写以下代码。

public class SaveDataMiddleware
    {
        private readonly RequestDelegate _next;
        private readonly IHostingEnvironment _hostingEnvironment;
        public SaveDataMiddleware(RequestDelegate next, IHostingEnvironment hostingEnvironment)
        {
            _next = next;
            _hostingEnvironment = hostingEnvironment;
        }
        public async Task Invoke(HttpContext httpContext)
        {
            bool isSaveDataEnabled = false;
            if (httpContext.Request.Headers.TryGetValue
             ("save-data", out StringValues saveDataHeaders))
            {
                isSaveDataEnabled = true;
            }
            if (isSaveDataEnabled)
            {
                //Write your custom code here
               // to send out optimized content
            }
            else
            {
               await _next(httpContext); //Save-Data not enabled
            }
        }      
    }

将保存数据中间件添加到ASP.Net Core中的请求管道

在构建ASP.Net Core应用程序时,您可以利用各种中间件组件来自定义请求和响应的处理,甚至检查,路由或修改流经管道的请求和响应消息。

现在已经创建了定制中间件,我们必须将其添加到请求处理管道中。 使用启动类的Configure方法配置ASP.Net Core中的中间件。 以下代码段显示了如何在IApplicationBuilder类型的实例上使用扩展方法将中间件添加到请求处理管道。

public static class SaveDataRequestHeaderMiddlewareMiddlewareExtensions
{
    public static IApplicationBuilder UseSaveDataMiddleware(this IApplicationBuilder builder)
    {
        return builder.UseMiddleware<SaveDataRequestHeaderMiddleware>();
    }
}

最后,这是在Startup类的Configure方法中如何使用扩展方法的方法。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.UseSaveDataMiddleware();
            app.UseMvc();
        }

这就是您需要做的。 现在可以使用自定义中间件了。 请注意,我尚未编写用于优化内容的代码-如果启用了“保存数据”,我将留给您编写必要的代码来呈现优化的内容。

Save-Data标头解决了在客户端交付优化内容的需求。 此标头用于让服务器知道客户端打算减少数据使用量。 通过检测ASP.Net Core应用程序中的Save-Data标头,您可以通过响应轻量级内容来容纳客户端。

From: https://www.infoworld.com/article/3344600/how-to-use-the-save-data-request-header-in-aspnet-core.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值