用户输入URL后发生了什么,以及优化问题

用户角度:
1、打开浏览器
2、输入URL
3、按下回车
4、浏览器呈现画面

当用户输入页面地址后,浏览器获得用户希望访问的地址,便向该站点服务器发起一系列的请求,这些请求不光包括对页面的请求,还包括对页面中许许多多组件的请求,比如图片(img)、叠层样式表(css)、脚本(javascript)、内嵌页面(iframe)、音频媒体文件等。接下来一段时间,浏览器等待服务器的响应以及返回的数据。待浏览器获得所有返回的数据后,经过浏览器本地的计算和渲染,最终呈现一幅完整的页面在用户眼前。

这个过程中,主要经历以下三部分时间:
1、数据在网络上传输的时间;
2、站点服务器接受处理请求,并且生成回应数据的时间
3、浏览器本地计算和渲染的时间;

数据在网络上传输的时间包括两个部分:
1、浏览器发出请求数据到服务器,经过网络所需要消耗的时间;
2、服务器回应数据到浏览器,经过网络所需要消耗的时间;
这两部分消耗的总时间,我们称之为响应时间。它的决定因素包括发送数据的量和网络带宽;

站点服务器接受处理请求,并且生成回应数据的时间主要消耗在服务器端,这其中包括非常多的环节。
比如说服务器的并发策略、I/O模型、I/O性能、CPU核数等,当然也包括应用程序本身的逻辑复杂度和数据库操作等。

浏览器本地计算和渲染的时间自然消耗在浏览器端,它依赖的因素包括浏览器本身采用的并发策略、css样式渲染方式、javascript脚本解释器的性能、页面的大小、页面组件的数量、页面组件的缓存状况、页面组件的域名分布以及域名DNS解析等。并且其中的因素会随着各个厂商浏览器的类型、版本不同而不同。比如说某IE,它最多只能支持并发4个下载。而某火狐可以8个甚至更多。

方案一:减少页面中的HTTP请求
任何一个页面都包含多个组件(img/css/js/iframe等),每个组件都需要下载、计算或渲染,毫无疑问这些行为都会消耗时间。那么如果我们可以让页面减少这些行为,应该就可以加快网页的展示速度。这是毫无疑问的。
1、设计更加简洁的页面,使其包含较少的图片和脚本,甚至css。但这样会牺牲美观和用户交互。
2、将多个图片合并为一个文件,利用css背景图片偏移的技术将其呈现在网页中,避免多个图片下载。(雪碧图)
3、合并和压缩javascript脚本和css样式表。
4、充分利用HTTP中的浏览器端Cache策略,减少重复下载。

方案二:加快服务器端脚本的计算速度
比如说升级PHP的版本,据悉7.x的版本比5.x的版本性能优化快了近20倍。对于一些商业支持度较强的脚本语言比如.net和jsp,都有内置的优化方案。比如说解释器对某个脚本程序第一次解释的时候缓存起来,以供下次使用

方案三:使用动态缓存技术
将动态内容的HTML输出结果缓存起来,在随后一段时间内当有用户访问时便跳过重复的动态内容计算而直接输出。
但并不是所有的动态内容懂适合页面缓存。实际情况实际分析。缓存的难点在于一系列非常现实的问题,比如说成千上万的缓存文件该如何存储,缓存的命中率如何?缓存的过期策略如何设计?

方案四:数据缓存
某些动态内容的计算时间,其实主要消耗在一些烦人的特殊数据上,这些数据或者更新过于频繁,或者消耗大量的I/O等待时间,比如说数据库某字段频繁的更新和读取,这时候我们可以考虑将数据缓存起来。

方案五:负载均衡

当我们最大幅度的发挥了单台WEB服务器的处理能力,却还是超出了它承压的极限时,就需要更多的服务器来分担工作了。我们需要想办法将流量合理的转移到其他服务器上去。我们可以通过不同的方法实现web负载均衡,比如简单的HTTP重定向、dns轮询解析,反向代理。LVS组件服务器集群。

方案六:优化数据库
往往一些性能问题都发生在表现不佳的数据访问层面。比如说不合理的SQL语句、不合理的应用程序访问设计、不合理的数据库表结构设计。缺乏对数据库内部构造的了解,毫不夸张的说,以上优化全部白干!

时间: 2024-10-08 10:19:51

用户输入URL后发生了什么,以及优化问题的相关文章

细说浏览器输入URL后发生了什么

细说浏览器输入URL后发生了什么 总体概览 大体上,可以分为六步,当然每一步都可以详细都展开来说,这里先放一张总览图: DNS域名解析 在网络世界,你肯定记得住网站的名称,但是很难记住网站的 IP 地址,因而也需要一个地址簿,就是 DNS 服务器.DNS 服务器是高可用.高并发和分布式的,它是树状结构,如图: 根 DNS 服务器 :返回顶级域 DNS 服务器的 IP 地址 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址 权威 DNS 服务器 :返回相应主机的 IP 地址 DNS的

在浏览器地址栏中输入URL后发生了什么

在浏览器地址栏中输入URL后发生了什么 基本流程: ①查询ip地址 ②建立tcp连接,接入服务器 ③浏览器发起http请求 ④服务器后台操作并做出http响应 ⑤网页的解析与渲染 详细步骤如下: 查询ip地址 ①浏览器解析出url中的域名. ②查询浏览器的DNS缓存. ③浏览器中没有DNS缓存,则查找本地客户端hosts文件有无对应的ip地址. ④hosts中无,则查找本地DNS服务器(运营商提供的DNS服务器)有无对应的DNS缓存. ⑤若本地DNS没有DNS缓存,则向根服务器查询,进行递归查找

在浏览器的地址栏中输入url后发生了什么

这是一个非常有意思的事情,通过这个我们可以更好地理解http请求. 在浏览器的地址栏中输入url后会经历下面的步骤: 第一步:进行域名解析--- 浏览器搜索自身的DNS缓存,如果有缓存,再看有没有过期,如果没过期,就是用这个ip,如果过期,这个过程就结束了. 注:查看谷歌浏览器的dns缓存的方法--在地址栏中输入chrome://net-internals/#dns 这样就可以看到自己的浏览器中的dns缓存. 第二步:如果浏览器没有搜索到自身的dns缓存或者是自身的dns缓存已经失效,那么它就会

浏览器输入url后发生的事情以及每步可以做的优化

首先总结下输入url按下回车后的大致流程: 查询url的ip地址. 建立tcp连接,连接服务器. 浏览器发起http/https请求. 服务器响应浏览器的请求. 网页的解析与渲染. 下面分析每个过程 查询url的ip地址详细过程: 浏览器解析出url中的域名. 查询浏览器的DNS缓存. 浏览器中没有DNS缓存,则查找本地客户端hosts文件有无对应的ip地址. hosts中无,则查找本地DNS服务器有无对应的缓存. 若本地DNS服务器没有缓存,则向根服务器查询,进行递归查找. 递归查找从顶级域名

浏览器输入URL后发生了什么

假如在浏览器中输入了www.cnblogs.com,然后回车 DNS解析 浏览器检查浏览器缓存是否有域名对应的IP. 浏览器查找操作系统是否有对应的DNS解析成果(hosts文件). 查找路由器缓存. 浏览器客户端向本地域名服务器发送一个含有域名www.cnblogs.com的DNS查询报文.(大约80%的域名解析到这里就完成了) 本地DNS服务器把查询报文转发到根DNS服务器,根DNS服务器注意到其com后缀,于是向本地DNS服务器返回com的顶级域名服务器的IP地址. 本地DNS服务器再次向

输入url后发生了什么

(1)浏览器解析 (2)查询缓存 (3)DNS查询 顺序如下,若其中一步成功直接进去建立连接部分: -- 浏览器自身DNS -- 操作系统DNS -- 本地hosts文件 -- 像域名服务器发送请求 (4)建立连接 -- TCP三次握手(three-way handshaking) -- 发送方: SYN(synchonize) -- 接受方: SYN/ACK(acknowledgement), 确认信息传达 -- 发送方: ACK - 确认接受方再线可收消息,握手结束 Accept -- 1,

【计算机网络】当输入URL后发生了什么

我们使用一个非常简单的模型,并假设它是最简单的HTTP请求,不使用代理并且使用的是IPv4 1. 浏览器首先判断使用的是什么协议(ftp/http),然后对URL进行安全检查.最后浏览器查看缓存,如果请求的对象在缓存中并且是比较新的.那么直接跳到步骤9 2. 浏览器请求OS返回服务器的IP地址 3. 操作系统启动DNS查询并向浏览器返回服务器的IP地址 4. 浏览器使用TCP协议建立与服务器的连接 5. 浏览器通过TCP连接发出HTTP请求 6. 浏览器收到HTTP响应.这时候浏览器可能关闭TC

当输入URL后,会发生什么[转]

当输入URL后,会发生什么 本文转载自:http://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html原文翻译自:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等.本文将更深入的

<用户输入url按下回车,一直到用户看到界面,这期间经历了什么>

用户输入url按下回车,一直到用户看到界面,这期间都经历什么? 一.  DNS解析缓存: 1. 找到浏览器缓存解析域名: 2. 找到和 DNS 缓存 ; 3. 找到路由器 DNS 缓存: 4. 找到查询 DNS 缓存( 80% 的 DNS 在查找, 到这一步就结束了): 5. 递归查询,(查的是全球 13 台 DNS 根服务器的其中一个) 二. 运行TCP (协议) 连接,三次握手,(更具上一步的请求回来的 IP 地址,去连接服务器) 1.  第一次握手:由浏览器发给服务器(我想给你说话,你能听