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

HTTP/2有什么好处:ApachevsNginx?

如何解决《HTTP/2有什么好处:ApachevsNginx?》经验,为你挑选了1个好方法。

我正在为大型SPA应用程序选择一个更好的Web服务器,其中包含许多JS和css文件.使用HTTP/2,我们现在无法将它们合并为两个大文件(JS为3 MB),在慢速连接时需要很长时间才能加载.但是哪种服务器更适合新的HTTP/2范例?

Nginx旨在解决http/1问题,它的优点是更好地服务于大量连接,HTTP/2只有一个连接用于所有文件,因此该功能现在似乎是多余的.你觉得怎么样,你能告诉我什么?



1> Barry Pollar..:

这是一个非常主观的问题,可能不适合StackOverflow,所以想象一下这个问题会被关闭.但这是我的两分钱......

完全披露:我主要使用Apache.

首先,让我们解决您的一个错误点:Nginx不是为解决HTTP/1问题而设计的.Nginx旨在通过基于异步事件驱动模型来解决先前Web服务器的一些可伸缩性问题.在HTTP/2下,每个客户端应该有更少的连接,你可以认为这使得可扩展性不是一个问题,因为每个客户端只使用他们之前所做资源的六分之一 - 但这可能有点简单.Apache现在也有一个事件驱动的mpm模块(虽然在任何线程不安全的PHP应用程序的情况下默认情况下通常不会打开 - 但这也是Nginx的一个问题!).这让他们更加重新回归,尽管仍有很多争论,很多人说Nginx仍然更快.根据我的经验,除非你正在处理真正庞大的卷(在这种情况下你应该看看CDN,负载均衡器和缓存加速器),很少有人会注意到Nginx和Apache之间的区别.当下游应用程序和系统发挥作用时尤其如此 - 缓慢的PHP应用程序将很快消除Web服务器级别的任何性能或可伸缩性问题.

无论如何,回到你的主要问题:

对于HTTP/2支持,我的选择是Apache over Nginx.它有一段时间有更好的HTTP/2支持.例如,Nginx仅在2018年初添加了HTTP/2 Push支持,而Apache已经拥有了多年的支持.Apache还支持PushDiary(基于即将推出的Cache- Digests草案),以防止推送已经发送的资源,支持提前推送的早期提示,以及推送优先级选项.从HTTP/2推送开始,Apache还支持在代理模式下使用HTTP/2(尽管它仍然标记为实验性的,目前这个问题的实用性是有问题的),而HTTP/2则通过HTTP(h2c - 虽然再次有用的是有问题,因为浏览器不支持这个).我还发现Apache HTTP/2实现的主要开发人员对mod_http2模块的GitHub页面非常敏感(自2.4.18以来作为核心Apache的一部分包含在内,自2.4.26以来不再标记为"实验性").

另一方面,我了解Cloudflare使用基于Nginx的自定义Web服务器,并且他们已经推出了一年多的HTTP/2推送(正是他们将此实现向后移植到Nginx).因此,考虑到Cloudflare的规模,虽然不确定它是如何根据核心Nginx代码进行自定义的,但这与实现相当.

还有一个HTTP/2一致性测试工具可用,当我最近针对一些常见的HTTP/2服务器运行时(对于我正在写的主题 btw的书),我得到了以下结果,这清楚地表明Apache是​​最合规的与规格:

哪个是最兼容的HTTP/2服务器?

现在公平地说,大多数错误的原因都是没有正确回应不良请求,在完美的世界中永远不应该发送,所以并不重要.但是,我们仍然没有生活在一个完美的世界中,错误检查是技术的重要组成部分,所以我一个人肯定更喜欢更符合要求的服务器.

最终,您最好选择最适合您的实施方案.一般的感觉一直是Nginx更轻,更容易配置,但另一方面可能并不像Apache那样功能齐全.HTTP/2支持似乎继续这个主题.如果你想玩即将推出的HTTP/2功能,那么对我来说,Apache肯定有优势(尽管没有什么可说的,以后也不会改变).但是,对于HTTP/2的基本用例,它们可能被认为是类似的.甚至HTTP/2推送还没有被使用,并且存在严重的担忧,如果没有适当地使用或者由于实现问题,它可能会降低性能,这可能是为什么它不是Nginx的优先级,而他们最近只实现了它.


推荐阅读
  • HTTP/2 与 HTTP/3:比较
    HTTP2与HTTP3:比较|HTTP(超文本传输​​协议)是万维网所基于的应用层传输协议。最初在80年代后期构思为基于单行文本的协议, ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 如何解决《node.js服务器和带有express.js的HTTP/2(2.0)》经验,为你挑选了2个好方法。 ... [详细]
  • doesanyoneknow,howIcanimplementtheTLS-ALPNin.NET?有人知道我如何在。net中实现TLS-ALPN吗?Iveimplemen ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • 一文读懂HTTP2及HTTP3特性|前言HTTP2相比于HTTP1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前 ... [详细]
author-avatar
陈炘宇_573
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有