前言

为什么要写一个专栏来总结《从一个浏览器的请求到响应的过程,来总结这一二年我遇到的“鬼”知识点》这么庞大的知识点呢?

写这些东西绝不是为了吹嘘自己懂了什么或者是自己发现了什么,这,只是一个记录,比如后面RESTful介绍,我就可以直接引用阮一峰大佬总结好的最佳实践,别人的轮子已经造的挺好了,我为什么还要重复

起因还是因为某次面试的时候,面试官让我尽可能详细地描述一下“一个请求到结束的全过程”,当时掌握的知识点水平有限,我就简短地回答了一下面试官,但是今天又想起这道面试题,才忽然发现自己的回答太过于笼统,可能当时面试官想针对每个知识点考察一下,所以才有这个系列的由来,日后会慢慢补充,希望各位都能有所收获

一下是我当年的回答,现在看看还真是避重就轻23333:


当时回答的概要1.0

1、用户从客户端发起请求(流程1),客户端首先判断本地缓存(流程2),如果命中缓存则直接响应给用户(流程3),请求结束


本地缓存

2、未命中缓存,通过http访问服务器(流程4),一般都会做负载均衡轮训到某一台业务服务器(流程5)

3、nginx会判断该请求是否缓存,如果命中缓存,或者前端请求的静态资源图片/css/js等文件, 则返回客户端(流程7)


服务器缓存

4、动态资源nginx通过fastcgi发送给php-fpm进行解析(流程8、9)

5、根据不同的业务需求,php直接或通过redis/memcached获取数据进行业务处理(流程10-15),然后返回给nginx(流程16)组装响应报文,发送给客户端


现在回想起来,这个回答真的只能0分滚粗,很明显的入门级水准,我想当年考官也不是想听这些,正因为如此,我才想填补一下以前的遗憾,把这套知识体系慢慢补全

按照我现在的理解,当年的面试官有可能想从这一个问题中获取如下的知识点:

(流程4)http协议的三次握手与四次挥手,tcp/ip模型是什么,RESTful编程风格

(流程5)select、poll和epoll的实现机制与区别

(流程8)fastcgi接口是什么

(流程10)缓存设计方案相关:缓存穿透、缓存雪崩、缓存重建等

(流程12-15)mysql设计、索引等

以我现在的水平我就只能暂时理解成想考我这些知识点喽,其他的日后再继续补充


那么我之后的文章将从三部分开始写起

1、客户端处理

2、网络传输

3、服务端处理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《老男孩Linux运维》笔记 隐藏Nginx软件版本号 一般来说,软件的漏洞都和版本有关。因此要尽量隐藏对访问用户...
    Zhang21阅读 3,975评论 0 28
  • 谈论WEB编程的时候常说天天在写CGI,那么CGI是什么呢?可能很多时候并不会去深究这些基础概念,再比如除了CGI...
    __七把刀__阅读 2,340评论 2 11
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 2,274评论 0 9
  • 0 系列目录# WEB请求处理 WEB请求处理一:浏览器请求发起处理 WEB请求处理二:Nginx请求反向代理 本...
    七寸知架构阅读 14,291评论 22 189
  • 我曾经问自己,远方到底有多远?这一生,你到底要走多远? 在走过无数次的远方之后,在某一刻,我得到了答案。 这一生,...
    牧野清风阅读 3,004评论 8 24

友情链接更多精彩内容