据我所知,这个过程应该是:
>输入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开发人员更好地了解我们每天的工作.
我会根据答案更新这个问题.
谢谢.
解决方法
> DNS层可以帮助客户端根据地理位置将客户端引导到不同的服务器,以帮助实现负载平衡和延迟最小化,一个服务器可以响应许多不同DNS名称的请求.
>浏览器可以制作不同类型的请求(GET,POST,HEAD等),通常包括几个不同的标头,包括Cookie,浏览器功能,语言偏好等.
大多数浏览器通常会保留一个缓存,以免多次下载东西,并使用各种技术来确定文件的缓存版本是否有效.
>在现代网页中,许多不同类型的文件(HTML,CSS,图像,JavaScript,视频,Flash,…)之间经常会发生复杂的交互,网页开发人员通常需要详细了解浏览器之间的差异,以保持网页的工作为了所有人
这些话题中的每一个等等,都可以详细讨论.请问有关您感兴趣的主题的更具体的问题更为实际吗?