热门标签 | 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的优先级,而他们最近只实现了它.


推荐阅读
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • LDAP服务器配置与管理
    本文介绍如何通过安装和配置SSSD服务来统一管理用户账户信息,并实现其他系统的登录调用。通过图形化交互界面配置LDAP服务器,确保用户账户信息的集中管理和安全访问。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • Git命令基础应用指南
    本指南详细介绍了Git命令的基础应用,包括如何使用`git clone`从远程服务器克隆仓库(例如:`git clone [url/path/repository]`)以及如何克隆本地仓库(例如:`git clone [local/path/repository]`)。此外,还提供了常见的Git操作技巧,帮助开发者高效管理代码版本。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 期末Web开发综合实践项目:运用前端技术打造趣味小游戏体验
    期末Web开发综合实践项目中,学生通过运用HTML、CSS和JavaScript等前端技术,设计并实现了一款趣味性十足的小游戏。该项目不仅检验了学生对前端基础知识的掌握情况,还提升了他们的实际操作能力和创意设计水平。视频链接展示了项目的最终成果,直观呈现了游戏的互动性和视觉效果。 ... [详细]
  • Linux学习精华:程序管理、终端种类与命令帮助获取方法综述 ... [详细]
  • PHP高性能并发处理技术深入解析
    在《PHP高性能并发处理技术深入解析》一文中,探讨了提升PHP应用性能的多种策略。首先,通过将应用程序与静态资源(如JavaScript、CSS文件及图像)分离并部署于专门的服务器上,有效减轻了主服务器的负载。其次,文章强调了页面缓存的重要性,通过缓存由应用程序生成的页面内容,不仅显著减少了CPU的使用率,还提升了用户的访问速度。对于需要动态更新的部分页面,文章也提出了相应的优化建议,确保在保持内容时效性的同时,不影响整体性能表现。 ... [详细]
  • 在Linux系统中Nginx环境下SSL证书的安装步骤与WordPress CDN的高级配置指南
    在Linux系统中,Nginx环境下安装SSL证书的具体步骤及WordPress CDN的高级配置指南。首先,安装SSL证书需要准备两个关键配置文件,并建议在操作前备份相关服务器配置文件,以确保数据安全。随后,本文将详细介绍如何在Nginx中正确配置SSL证书,以及如何优化WordPress的CDN设置,提升网站性能和安全性。 ... [详细]
  • 操作系统如何通过进程控制块管理进程
    本文详细介绍了操作系统如何通过进程控制块(PCB)来管理和控制进程。PCB是操作系统感知进程存在的重要数据结构,包含了进程的标识符、状态、资源清单等关键信息。 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • 自定义滚动条美化页面内容
    当页面内容超出显示范围时,为了提升用户体验和页面美观,通常会添加滚动条。如果默认的浏览器滚动条无法满足设计需求,我们可以自定义一个符合要求的滚动条。本文将详细介绍自定义滚动条的实现过程。 ... [详细]
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社区 版权所有