【发布时间】:2011-09-08 13:02:55
【问题描述】:
我试图了解使用网站时后台发生的事情,或者基本上是用户与浏览器交互时发生的事情。我知道这是一个庞大的列表,并且高度依赖于架构和用户操作等,我只是想了解主要的事情并消除我的误解,并使用它来阅读更多关于我不了解的内容。
作为一个练习,我试图记下后台发生的与用户在浏览器中的操作相关的事情。这是我对这个开放式但有趣的问题的尝试:
用户输入一个 url => 浏览器检查是否 在浏览器缓存中可用 => DNS 外观 up [根 dns 查找 => 递归 dns => 获取 ip ] => 建立 tcp 连接 => 发送 http req => 获取 来自网络服务器的静态页面=> if 需要进行身份验证 发生 [要么从 浏览器或要求用户输入 凭据] => 以某种方式获得 动态元素以及[如何? , 这里有一些惰性初始化 ?] => 然后用户执行一些 动作[点击链接或其他东西] => 检查浏览器缓存 => 如果没有用 [取输入参数并嵌入 以某种方式在网址中[可能是 如果需要,加密一些东西] => 命中负载均衡器 => 定向到 应用程序服务器 [取决于如何 LB 选择主机] => 应用程序 检查服务器缓存 [memcached 或 某种缓存,不确定是否这样 “通常”发生在这里或某些地方 其他级别] => 应用服务器 试图理解请求 [如果 它是一个监听某个端口的服务, http 端口 80 它将获取 URL 和 解析执行一些操作] => 如果需要,则查询数据库 => 可能再次有联系 管理/缓存/并行查询等在这里 => 数据库将结果返回给应用服务器 => 应用服务器创建一个 结果负载和标头 [http] => 将其发送到浏览器进行渲染 => 浏览器缓存已更新 => 用户 对响应做出反应。
我没有考虑重试/失败以及如何处理它们,但我也想在一般意义上得到一些输入
注意:
我在看一般情况,我相信很少有公司会以不同的方式来做这件事等等。不过,我也想听听替代方案!。
- 这是为了获得更多 透视和阅读几件事 总的来说,这将对我有所帮助。
- 显然我做了一个诚实的尝试
- 我也希望这对其他人有帮助 总体上看这个问题 学习新知识。
- 我不是在问 对于意见等,所以这不是一个 完全开放式问题[不是 一切都是对的,尽管有 多种选择]
谢谢!
【问题讨论】:
-
我认为这太开放了,无论如何,这是错误的地方,因为它不是 编程 问题。
-
我试图使其具体化,并给出了人们可以添加的初始流程。恕我直言,有人可以清楚地添加并从中获得价值。如果有任何建议以不同的方式表达这一点,我将不胜感激。
-
@Kirk Woll :或者,有什么推荐的地方可以问一些开放式的问题,我发现SO上很多人都有现实生活经验,所以他们可以最好地回答开放式问题经验中的问题。谢谢
标签: web-services web-applications architecture web