热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ASP.NetHTTP2PushPromise很慢-ASP.NetHTTP2PushPromiseisslow

ImtryingtoimplementtheHttp2pushserverfunctionalityusingPushPromise.NET4.6.1,forthis

I'm trying to implement the Http2 push server functionality using "PushPromise" .NET 4.6.1, for this I have a "html extension" with Razor (we did not implement MVC only used the Razor engine to build the pages).

我正在尝试使用“PushPromise”.NET 4.6.1实现Http2推送服务器功能,为此我有一个带有Razor的“html扩展”(我们没有实现MVC只使用Razor引擎来构建页面)。

    public static IHtmlString PushPromiseStylesheet(this HtmlHelper htmlHelper, string src, bool addDomElement = true)
    {
        var cOntext= HttpContext.Current;
        var path = System.Web.Optimization.Styles.Url(src).ToString();

        var headers = new NameValueCollection { { "accept-encoding", context.Request.Headers["accept-encoding"] } };
        context.Response.PushPromise(path, "GET", headers);

        var styleElement = $"";

        return new HtmlString(addDomElement ? styleElement : String.Empty);
    }

    public static IHtmlString PushPromiseJavascript(this HtmlHelper htmlHelper, string src)
    {
        var cOntext= HttpContext.Current;
        var path = System.Web.Optimization.Scripts.Url(src).ToString();

        var headers = new NameValueCollection { { "accept-encoding", context.Request.Headers["accept-encoding"] } };
        context.Response.PushPromise(path,"GET",headers);

        var JavascriptElement = $"";

        return new HtmlString(JavascriptElement);
    }
    public static IHtmlString PushPromiseImage(this HtmlHelper htmlHelper, string src, bool addDomElement = false)
    {
        var cOntext= HttpContext.Current;
        var path = System.Web.Optimization.Scripts.Url(src).ToString();

        var headers = new NameValueCollection { { "accept-encoding", context.Request.Headers["accept-encoding"] } };
        context.Response.PushPromise(path,"GET",headers);

        var imgElement = $"";

        return new HtmlString(addDomElement ? imgElement : String.Empty);
    }

    public static IHtmlString PushPromiseWebFont(this HtmlHelper htmlHelper, string src, string type = null)
    {
        var cOntext= HttpContext.Current;
        var path = System.Web.Optimization.Scripts.Url(src).ToString();
        type = string.IsNullOrWhiteSpace(type) ? "font/woff2" : type;

        var headers = new NameValueCollection { { "accept-encoding", context.Request.Headers["accept-encoding"] } };
        context.Response.PushPromise(path, "GET", headers);

        var fOntElement= $" ";

        return new HtmlString(fontElement);
    }

And in the of the page:

并在页面的中:





@Html.PushPromiseStylesheet("~/css/app/fonts.css")
@Html.PushPromiseStylesheet("~/css/landing.base.css")
@Html.PushPromiseStylesheet("~/css/landing.style.css")
@Html.PushPromiseImage("/assets/img/bg-ofertas.jpg")
@Html.PushPromiseImage("/assets/img/landings/v2/iphone.png")
@Html.PushPromiseImage("/assets/img/landings/v2/ipad-new.png")
@Html.PushPromiseImage("/assets/img/landings/v2/macbook-new.png")

@Html.PushPromiseWebFont("/assets/fonts/CredimejoraIcons.woff2?miydpz")
@Html.PushPromiseWebFont("/assets/fonts/centrale_sans_regular_italic-webfont.woff2")
@Html.PushPromiseWebFont("/assets/fonts/centrale_sans_bold_italic-webfont.woff2")
@Html.PushPromiseWebFont("/assets/fonts/centrale_sans_regular-webfont.woff2")
@Html.PushPromiseWebFont("/assets/fonts/centrale_sans_bold-webfont.woff2")

@Html.PushPromiseJavascript("/assets/js/public/libs/jquery.inputmask.bundle-3.3.6.2.js")

I have hosted the same project "without using PushPromise" (credimejorademo), and in another domain I have implemented PushPromise (aquituinmueble):

我已经托管了同一个项目“不使用PushPromise”(credimejorademo),而在另一个领域我实施了PushPromise(aquituinmueble):

Demo(credimejorademo) | Demo2 (aquituinmueble)

https://www.webpagetest.org/video/compare.php?tests=170609_PD_e32f303e034aef3fef7140fef181a738,170609_FK_7d538ecdacf071cce320ad14bf97414c

1 个解决方案

#1


0  

Just a couple of things I'd mention here. Firstly, although this may seem counter-intuitive, you're probably best off not pushing -everything-. The limited amount of testing I've seen (eg: https://www.smashingmagazine.com/2017/04/guide-http2-server-push/) suggests that pushing css only is probably the best way to improve performance, although it's worth playing around with on an individual site basis.

我在这里提到的几件事情。首先,虽然这看起来可能是违反直觉的,但你可能最好不要推动 - 所有东西 - 。我见过的有限数量的测试(例如:https://www.smashingmagazine.com/2017/04/guide-http2-server-push/)表明仅推送css可能是提高性能的最佳方法,尽管值得在个人网站上玩游戏。

The other thing is that the way you are implementing PushPromise means that IIS is only getting that request once it's already started processing the page. ie, you're requesting the push at more or less the same time the page would have requested it via a standard .

另一件事是你实现PushPromise的方式意味着IIS只有在它已经开始处理页面时才获得该请求。也就是说,你在或多或少地通过标准请求页面请求推送。

Hope this helps.

希望这可以帮助。


推荐阅读
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文详细介绍了PHP中与URL处理相关的三个函数:http_build_query、parse_str和查询字符串的解析。通过示例和语法说明,讲解了这些函数的使用方法和作用,帮助读者更好地理解和应用。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
author-avatar
活的精彩的人2011_373
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有