用户输入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语句、不合理的应用程序访问设计、不合理的数据库表结构设计。缺乏对数据库内部构造的了解,毫不夸张的说,以上优化全部白干!
用户输入URL后发生了什么,以及优化问题的更多相关文章
- 【转】浏览器中输入url后发生了什么
原文地址:http://www.jianshu.com/p/c1dfc6caa520 在学习前端的过程中经常看到这样一个问题:当你在浏览器中输入url后发生了什么?下面是个人学习过程中的总结,供个人复 ...
- 在浏览器输入URL后发生了什么?
摘录部分一:https://www.cnblogs.com/kongxy/p/4615226.html 从输入URL到浏览器显示页面发生了什么 当在浏览器地址栏输入网址,如:www.baidu.com ...
- 【web性能优化】当用户输入网址后发生了什么?
简单叙述 这个过程可以大致分为两个部分:网络通信和页面渲染. 一.网络通信 互联网内各网络设备间的通信都遵循TCP/IP协议,利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信.分层由 ...
- 浏览器输入url后发生的事情以及每步可以做的优化
首先总结下输入url按下回车后的大致流程: 查询url的ip地址. 建立tcp连接,连接服务器. 浏览器发起http/https请求. 服务器响应浏览器的请求. 网页的解析与渲染. 下面分析每个过程 ...
- 天龙八步"细说浏览器输入URL后发生了什么
本文摘要: 1.DNS域名解析: 2.建立TCP连接: 3.发送HTTP请求: 4.服务器处理请求: 5.返回响应结果: 6.关闭TCP连接: 7.浏览器解析HTML: 8.浏览器布局渲染: 总结 输 ...
- 【转】浏览器输入URL后发生了什么
转自:http://www.cnblogs.com/webdeve/p/7865520.html本文摘要: 输入网址 当我们在浏览器输入网址并回车后,一切从这里开始. 一.DNS域名解析 我们在浏览器 ...
- “天龙八步”细说浏览器输入URL后发生了什么
本文摘要: 1.DNS域名解析: 2.建立TCP连接: 3.发送HTTP请求: 4.服务器处理请求: 5.返回响应结果: 6.关闭TCP连接: 7.浏览器解析HTML: 8.浏览器布局渲染: 总结 输 ...
- 浏览器输入URL后发生了什么
假如在浏览器中输入了www.cnblogs.com,然后回车 DNS解析 浏览器检查浏览器缓存是否有域名对应的IP. 浏览器查找操作系统是否有对应的DNS解析成果(hosts文件). 查找路由器缓存. ...
- 细说浏览器输入URL后发生了什么
本文摘要: 1.DNS域名解析: 2.建立TCP连接: 3.发送HTTP请求: 4.服务器处理请求: 5.返回响应结果: 6.关闭TCP连接: 7.浏览器解析HTML: 8.浏览器布局渲染: 总结 ...
随机推荐
- Codeforces 863F - Almost Permutation
863F - Almost Permutation 题意 给出每个位置可以放的数字的范围,定义 \(cost = \sum_{i=1}^{n}(cnt(i))^2\) ,其中 \(cnt(i)\) 为 ...
- ( 转 ) MySQL高级 之 explain执行计划详解
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:i ...
- Tomcat线程池实现
目前市场上常用的开源Java Web容器有Tomcat.Resin和Jetty.其中Resin从V3.0后需要购买才能用于商业目的,而其他两种则是纯开源的.可以分别从他们的网站上下载最新的二进制包和源 ...
- [BZOJ 4144] Petrol
Link: BZOJ 4144 传送门 Solution: 一道不错的图论综合题 因为只询问关键点,因此重点是要求出关键点之间的最短路,以最短路建图 记$nst[i]$为离$i$最近的关键点:可以发现 ...
- virtualenvwrapper的安装及问题解决
安装virtualenvwrapperyum install python-setuptools python-develpip install virtualenvwrapper # linux下 ...
- webservice_客户端生成工具
1. axis java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -p com.qunar.flight.flagship.provide ...
- spark DiskBlockManager
RDD本身presist可以是本地存储,本地存储级别的持久化实现方式如下: DiskBlockManager负责管理和维护block和磁盘存储的映射关系,通过blockId作为文件名称,然后如果是多个 ...
- RowState 介绍
RowState 介绍 从不同位置载入 DataRow 后 RowState 的状态修改, 更改, 删除后的 DataRow.RowState 转化使用 AcceptChanges, RejectCh ...
- linux/mac系统的软链接文件与硬链接文件
1.硬连接只能使用在文件上,不可以使用在文件夹上.至于文件前面的硬链接数字的含义如下: 如图标注区,为硬连接的数量,文件前的数字1表示没有硬链接.文件夹前面的数字至少是2,含义是这个文件夹是空文件夹, ...
- [原创]用逻辑嗅探破解接触式IC卡口令
最近两周对接触型IC卡很感兴趣,就动手实践了一下,最终实现的效果是通过破解IC卡口令实现对数据修改,然后就可以随意洗衣服喽~IC卡从数据传递方式上划分为接触型和非接触型两种.接触型的卡片表面有金属贴片 ...