我想了解在使用网站时后台发生了什么事情,或者基本上当用户与浏览器交互时会发生什么事情。我知道这是一个庞大的列表,并且高度依赖于架构和用户操作等,我只是想了解一些重要的事情,并消除我的误解,并用它来阅读更多关于我不了解的内容。网站是如何工作的/现场发生的事情
作为一个练习,我试图记录下与用户在浏览器中的操作有关的背景。这是我在此位的尝试开放式的,但有趣的问题:
用户输入一个URL =>浏览器检查 在浏览器缓存中可用=> DNS查询 了[根DNS查找=> DNS递归 =>获得IP] =>建立一个TCP连接=>发送HTTP REQ =>得到 从Web服务器静态页面=>如果 认证要求 发生[无论是从 浏览器读取cookie或要求用户输入 凭据] = >以某种方式获得 动态元素以及[如何? , 有一些懒惰动初始化这里 ?] =>然后用户执行某些 动作[点击一个链接或东西] => 检查浏览器缓存=>如果不利用 [获取输入参数,并在URL中嵌入 某种方式[可以是 加密一些事情,如果需要] => 命中负载平衡器=>定向到 应用服务器[取决于 的LB如何选择一个主机] =>应用 服务器高速缓存被选中[分布式缓存或 某种缓存,不确定这个 “正常”发生在这里还是某个 其他级别] =>应用服务器 尝试理解请求[如果 其服务监听某个端口上, http端口80将得到URL和 解析做一些操作,如果需要=> 有可能再次成为连接 MGMT => 查询数据库/缓存/并行查询等 =>数据库将结果返回给应用服务器=>应用服务器创建一个 结果有效负载和标头[http] => 将其发送到浏览器进行呈现=> 浏览器缓存更新=>用户 对响应作出反应。
我还没有考虑重试/失败,它们是如何处理的,但我想获得一些输入有作为一般意义上
注:
我在看的东西一般来说,我相信很少有公司可以用不同的方式来做等等。我也希望听到替代品,但是!
- 这是尝试,并获得更多 的视角和对几件事情 ,这将帮助我在读一般的努力。
- 显然,我做了一个诚实的努力
- 我也希望这将有助于其他 一般看问题 学到新的东西。
- 我不要求 征求意见等,所以这是不是一个 完全开放式的问题[不 一切都是正确的,虽然有很多 选项]
谢谢!
我认为这太开放了,无论如何,SO是错误的地方,因为它不是一个*编程*问题。 – 2011-06-04 22:30:43
我试图让它具体化,并给出了人们可以添加的初始流程。 Imho有人可以清楚地添加并从中获得价值。如果有任何建议以不同的方式表达这一点,我会很感激。 – codeObserver 2011-06-04 22:32:44
@Kirk Woll:或者,有没有推荐的地方可以问一些开放式的问题,我发现很多人都有真实的生活经验,所以他们可以从经验中回答最好的问题。谢谢 – codeObserver 2011-06-04 22:51:17