26 天前 / 孟思行
最近部门组织了一次前端性能优化交流会,大家从输入页面 URL 到最终页面展示内容这个过程提出了许多优化点。但同时发现很多同学对 HTTP 协议层的知识不能串联起来,于是整理了这篇文章,希望可以给大家带来一丝灵感。 当我们在页面上发起一个 AJAX 请求的时候,在网络协议层面都经历了哪些内容? //发起请求 fetch('https://baidu.com') //协议层 1... //协议层 2... //协议层 3... .then(res=> //得到结果 console.log(res) }) 如上述代码所示,我们对 baidu.com 发起了一个网络请求,最终在 then 方法中得到了具体的响应内容。
31 天前 / Hollis
GitHub 17k Star 的 Java 工程师成神之路,不来了解一下吗!最近一段时间以来,关于 HTTP/3 的新闻有很多,越来越多的国际大公司已经开始使用 HTTP/3 了。 所以,HTTP/3 已经是箭在弦上了,全面使用只是个时间问题,那么,作为一线开发者,我们也是时候了解下到底什么是 HTTP/3,为什么需要 HTTP/3 了。 那么,本文就来讲解一下到底什么是 HTTP/3?他用到了哪些技术?解决了什么问题? HTTP/2 存在的问题在撰写本文之前,我专门写了一篇文章《HTTP/2 做错了什么?刚刚辉煌 2 年就要被弃用了!?》分析 HTTP/2 存在的问题以及背后的原因。
38 天前 / 冷星1024
最近一段时间,连续遇到了两次跟重定向相关的问题,本着知己知彼百战百胜的态度,我决定深入了解一下,顺便跟大家分享一下。 作为前端开发,大家对重定向一定不陌生,不就是永久重定向和临时重定向嘛,谁还不知道呢 。 那么大家是否知道永久重定向和临时重定向的区别呢?如果不小心设置了永久重定向该如何取消呢?如何优雅地使用重定向呢?接下来就让我们来一探究竟吧。 URL 重定向,能够将多个 URL 指向同一个页面,这一技术有着多种用途。在 HTTP 中有一个专门的响应,叫做 HTTP 重定向,也就是所有 3 开头的响应(这个相信大家都背过)。
42 天前 / BloomingRose
为什么谈 HTTP1.1 Pipelining 呢?主要问题根源还是来源于 Beetlex 参加了 techempower 的测试。先看一下以下两项测试的结果: 以上分别是。net 平台的 Json 和 Plaintext 的测试结果,其实 Plaintext 最高能跑 700 多万 RPS 已经完全超了对网络 IO 读写损耗的认知,即使 10G 的光卡也不可能每秒承载 1400 万的 IO R/W。Beetlex 在其他测试结果都非常不错,但在最基础的 Plaintext 得到了最差的结果!为了解决这一问题我看了 N 次 aspcore 的框架代码看有没有细小的差异引起问题...
44 天前 / u553041
OkHttp,从名字也能感觉到这套框架似乎与 http 协议有着千丝万缕的关系。事实上也确实如此,OkHttp 所做的各种操作都是建立在 http 协议基础之上的。因此在理解并自己手写 OkHttp 之前,首先需要了解什么是 http 协议,以及 http 协议具体有哪些规则 ( 或者说是格式) 为什么需要 http 协议 一般情况下,网络数据由客户端向服务端发送,数据进入互联网之后,是以二进制流 (Stream)的形式进行传播,过程如下图所示: 客户端浏览器访问网页 “www.sample.com” 并进行登录操作,需要向服务端发送用户名与密码;然后服务端接收到客户端的请求之后...
47 天前 / 大龙叔
十月底我应邀在一个技术群里做个分享,思来想去我选择了 API 这个话题,因为很多互联网初创公司产品的第一步就是如何定义和设计一套 API,来满足产品核心所能提供的用户体验。我把 2016 年我在 Tubi 做 UAPI,2018 年我在 ArcBlock 做 Goldorin,2019 年做 Forge TX pipeline / Forge Patron 的经验揉了进去,又重新研究和回顾了 Swagger(Open API)/ GraphQL / GRPC gateway 这几个我曾经在各种场合使用过的工具,写下了一个 slides。
52 天前 / BloomingRose
【导语】:Python 实现的 HTTP 请求命令行客户端,我理解为 curl 的 Python 版本,但是提供了更友好,更易使用的命令及选项。 简介 HTTPie 是使用 Python 实现的 HTTP 命令行工具,提供了更人性化、交互性更好的命令和选项,可以用来做测试、调试以及与 HTTP API 服务器交互,http 和 https 命令可以用来发送任意的 http 请求,使用自然简单的语法,提供格式化和颜色输出。 HTTPie 具有以下主要功能特点: 1、自然直观的语法 2、可格式化终端输出,包括颜色的区分 3、支持 JSON 4、支持表单和文件上传 5、支持 HTTPS、代理和身份验证 6、可以发送任意请求数...
52 天前 / marketing-upyun
写文章网骗欺诈?网络裸奔?都是因为 HTTP?又拍云已认证的官方帐号 7 人赞同了该文章先跟大家讲个故事,我初恋是在初中时谈的,我的后桌的后桌。那个时候没有手机这类的沟通工具,上课交流有三宝,脚踢屁股、笔戳后背以及传纸条,当然我只能是那个屁股和后背,还不是能让初恋踢到的后背。 但是说实话传纸条真的很危险,尤其是这种早恋的纸条,被抓到就是一首《凉凉》。 特别我和初恋中间还隔着一个搞事的狗蛋,常年使用神乎其技的笔迹模仿技术篡改小纸条的内容,往往我写的是“放学一起去逛逛吧”,到了我初恋手里就变成了“放学一起写作业吧”。
87 天前 / 魔笛手CTO
1 为什么需要 HTTP 连接池 上世纪 90 年代初,因为即用即走的“请求—响应”模型,HTTP 协议得以广泛流行。 但是简单并不等同于高效,随着 HTTP 的流行,越来越多的开发者开始抱怨 HTTP 的性能问题。 在这种背景下,HTTP 持久连接应运而生。它改进了原来每一条 HTTP 消息都要新建一条 TCP 连接的低效,允许多个 HTTP 消息复用一个 TCP 连接。 但是 HTTP 持久连接作为协议规范,最终还是需要客户端自己实现。对于客户端而言,如果想要充分利用这一特性,必然需要引入连接池。
97 天前 / ye1s
声明 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。 雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。 No.1 什么是 waf? Web 应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称:WAF)。
100 天前 / Ryan众乐
3.2.1、实验一:禁用 keep-alive 的 http 请求 3.2.2、实验二:启用 keep-alive 的 http 请求 3.3、扩展四、总结五、彩蛋 1、从文中找出我的 IP 2、http 请求中是客服端还是服务端主动关闭的 tcp 连接? 请阅读到最后的彩蛋部分 HTTP 和 TCP 都是老生常谈的知识点,本文不进行铺开赘述。我们可能在 HTTP 和 TCP 中都听说“长连接”的说法,也听过 HTTP 中有 keep-alive,TCP 中有 keepalive。那么,HTTP 和 TCP 的长连接有何区别?HTTP 中的 keep-alive 和 TCP 中 keepalive 又有什么区别? Tips:HTTP 中是 keep-alive,TCP 中是 keepalive...
116 天前 / 魔笛手CTO
看过了 http.client 的文档,趁热打铁,今天继续研究一下 http.client 的源码。 (一) 你会怎么实现 开始之前先让我们回忆一下一个 HTTP 调用的完整流程: 看到这张图,不妨先来思考一下如果要你来实现 http.client,你会怎样做? (二) http.client 是怎么设计的 现在,复习一下上篇文章关于 http.client 里面官方给出的一个示例: >>>importhttp.client>>> conn = http.client.HTTPSConnection("www.python.org")>>> conn.request("GET", "/")>>> r1 = conn.getresponse()>>> print(r1.status, r1.reason)200 OK>>> data1 = r1.read() # This will r...
116 天前 / 杨琼璞
作为程序员,需要经常起一个静态服务器(http static server,在命令执行的所在路径启动一个 http 服务器,即可通过浏览器访问该路径下的所有文件),来完成一些任务,如局域网内传文件,或者测试网页等;本文主旨即分享,如何快速搭建 HTTP 静态服务的 10 种方法,对于非程序员人也可以使用。 Python 基于 Python 2.xpython -m SimpleHTTPServer 8000# Serving HTTP on 0.0.0.0 port 8000 ...基于 Python 3.xpython -m http.server 8000 基于 Livereload 库 pip install livereload#serves current dir with port 35729 which livereload extensions usel...
118 天前 / yes的练级攻略
每个时代,都不会亏待会学习的人。 大家好,我是 yes。 HTTP 协议在当今的互联网可谓是随处可见,一直默默的在背后支持着网络世界的运行,对于我们程序员来说 HTTP 更是熟悉不过了。 平日里我们都说架构是演进的,需求推动着技术的迭代、更新和进步,对于 HTTP 协议来说也是如此。 不知你是否有想过 HTTP 协议是如何诞生的,一开始是怎样的,又是怎么一步一步发展到今天的 HTTP/3 其中经历了哪些不为人知的秘密? 今天我就想和大家一起来看一看 HTTP 的演进之路,来看看它是如何从一个小宝宝成长为现在统治互联网的存在。
152 天前 / 搬运工来架构
点击上方蓝色字关注我们~ 前言 从 HTTP 请求超时、重试机制、操作系统网络等层面剖析了事故的原因,最终解决业务问题。 这里先抛两个问题: 1)你遭遇过由于网络连接或请求超时造成的生产事故吗? 2)你知道操作系统默认的网络连接超时是多少秒? 先思考下,可以将你的答案写在评论区哦。 问题背景 最近同事出现这么一个问题,简单业务场景: 服务 A 使用 HTTP 请求服务 B 接口 m。服务 A 起了一个定时任务 Task: 从 db 查询数据总共有 1200+ 条,每条记录对应一次请求,循环调用 m 接口。