fasthttp(快速HTTP包)v1.28.0官方版
最新推荐
-
齐鲁银行网银助手3.0.0.5官方版 安全软件 / 3.0M
-
360安全卫士U盘病毒专杀(Autorun.inf专杀)13.0.0.213简体中文绿色免费版 安全软件 / 86.1M
-
360安全卫士U盘病毒专杀工具v13.0.0.213绿色免费版 安全软件 / 86.1M
-
360安全卫士修复工具v13.0.0.213免费版 安全软件 / 86.1M
-
360安全卫士超强查杀V13.0.0.213安装版 安全软件 / 86.1M
精品推荐
-
WeeeCode(图形化编程软件)v3.6.2官方版 编程开发 / 429.1M
查看 -
核桃编程v2.1.123.0官方版 编程开发 / 272.5M
查看 -
DevToys(开发工具)v1.0.11.0官方版 编程开发 / 156M
查看 -
吾爱OD(附118款脱壳脚本)v1.10中文版(32/64位) 编程开发 / 15.5M
查看 -
360加固助手v3.6.1.0官网版 编程开发 / 271.5M
查看
本类排行
详情介绍
fasthttp 是Go 的快速HTTP 包,针对高性能进行了调整,热路径中内存分配为零,比net/http 快10 倍以上。目前,fasthttp已被VertaMedia成功应用于生产,为大家在一台物理服务器上超过150万个并发保活连接提供200Krps服务。
fasthttp 是Go 的快速HTTP 包,针对高性能进行了调整,热路径中内存分配为零,比net/http 快10 倍以上。目前,fasthttp已成功被VertaMedia用于生产,为大家在一台物理服务器上超过150万个并发保活连接提供200K rps服务。
常见问题
为什么要创建另一个http 包而不是优化net/http?
因为net/http API 限制了很多优化机会。例如。
net/http 请求对象的生命周期不受请求处理程序的执行时间的限制。因此服务器必须为每个请求创建一个新的请求对象,而不是像fasthttp那样重用现有的对象。
net/http头信息存储在map[string][]string中。因此,服务器必须解析所有标头,将它们从[] 字节转换为字符串,并将它们放入映射中,然后再调用用户提供的请求处理程序。这一切都需要fasthttp 避免的不必要的内存分配。
net/http 客户端API 需要为每个请求创建一个新的响应对象。
为什么fasthttp API 与net/http 不兼容?
因为net/http API 限制了很多优化机会。有关更多详细信息,请参阅上面的答案。同时,net/http API 的某些部分也不太适合使用。
比较net/http 连接劫持和fasthttp 连接劫持。
比较net/http 的Request.Body 读取和fasthttp 的请求正文读取。
为什么fasthttp 不支持HTTP/2.0 和WebSockets?
HTTP/2.0 支持正在进行中。 WebSocket 已完成。第三方也可以使用RequestCtx.Hijack 来实现这些功能。
与fasthttp 相比,net/http 是否有任何已知的优势?
是的。
net/http 从go1.6 开始支持HTTP/2.0。
net/http 的API 是稳定的,而fasthttp 的API 则在不断发展。
net/http 可以处理更多的HTTP 极端情况。
net/http 应该包含更少的错误,因为它被更多的人使用和测试。
net/http 可以在Go 1.5 及以上版本上运行。
为什么fasthttp API 倾向于返回[]byte 而不是字符串?
因为[]bytes 到string 的转换不是免费的- 它需要内存分配和复制。如果您更喜欢使用字符串而不是字节片,请随意将返回的[]byte 结果包装到string() 中。但请注意,这具有非零开销。
fasthttp支持哪些GO版本?
Go1.5或以上。旧版本将不受支持,因为它们的标准包缺乏有用的功能。
注意:Go 1.9.7 是最旧的测试版。我们建议您尽快更新。从1.11.3 开始,我们将放弃对1.9.x 的支持。
请提供真实的基准数据和服务器信息
请看这个问题。
有计划向fasthttp 添加请求路由吗?
没有计划向fasthttp 添加请求路由。使用支持fasthttp 的第三方路由器和Web 框架。
快速http路由
路由器
框架
鲁
阿特雷戈
光纤
变速箱
请参阅此问题以获取更多信息。
我在fasthttp 中检测到数据竞争!
凉爽的!提交错误。但在此之前,请检查代码中的以下内容。
确保从RequestHandler 返回后没有对RequestCtx 或其成员的引用。
确保在从RequestHandler 返回之前调用TimeoutError,如果存在对RequestCtx 或其成员的引用,则可能会被其他goroutine 访问。
我在这里没有找到我的问题的答案
尝试探索这些问题。
变更日志
v1.28.0
620f0c8 添加中间件选项来设置自定义远程地址(#1009) (Lauris BH)。
894272e 修复golangci-lint 操作(#1010) (Lauris BH)。