我在想这个问题很久了.这是一个大问题,因为它几乎涵盖了与Web开发相关的所有角落.
据我所知,这个过程应该是:
>输入URL到地址栏
>根据您的网络配置,请求将发送到DNS服务器
> DNS将路由您到域名的真实IP
>一个请求(具有完整的Http头)将被发送到服务器(具有3的IP来识别)的80端口(假设我们不指定另一个端口)
>服务器将搜索侦听端口,并将请求转发到正在监听80端口的应用程序(这里是nginx)或另一台服务器(然后3的服务器将像一个负载均衡器)
> nginx将尝试将url与其配置匹配,直接用作静态页面,或者调用相应的脚本内部代码(例如PHP / Python)或其他应用程序来获取动态内容(使用DB查询或其他逻辑)
>一个html将被发回到具有完整Http响应头的浏览器
>浏览器将使用其解析器解析html的DOM
>将按顺序请求外部资源(JS / CSS / images / flash / videos ..)(或不是?)
对于JS,它将由JS引擎执行
>对于CSS,它将由CSS引擎渲染,HTML的显示将根据CSS进行调整(也可以按顺序或不?)
>如果DOM中有一个iframe,那么将从步骤1-12执行一个单独的相同过程
以上是我的理解,但我不知道是否正确?多少精确?我错过了什么?
如果它是正确的(或几乎是正确的),我希望:
>使您的话中的步骤的描述更精确,或者如果发生重大变化,请写下您的步骤
>对您最熟悉的每一步进行深入的解释.
>一步一回答其他人可以在每个答案的评论中补充.
我希望这个线程可以帮助所有的Web开发人员更好地了解我们每天的工作.
我会根据答案更新这个问题.
谢谢.