简单叙述 这个过程可以大致分为两个部分:网络通信和页面渲染. 一.网络通信 互联网内各网络设备间的通信都遵循TCP/IP协议,利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信.分层由高到低分别为:应用层.传输层.网络层.数据链路层.发送端从应用层往下走,接收端从数据链路层网上走.如图所示: 1. 在浏览器中输入url 用户输入url,例如http://www.baidu.com.其中http为协议,www.baidu.com为网络地址,及指出需要的资源在那台计算机上.一般网络地…
从url输入网址后发生什么…
用户角度:1.打开浏览器2.输入URL3.按下回车4.浏览器呈现画面 当用户输入页面地址后,浏览器获得用户希望访问的地址,便向该站点服务器发起一系列的请求,这些请求不光包括对页面的请求,还包括对页面中许许多多组件的请求,比如图片(img).叠层样式表(css).脚本(javascript).内嵌页面(iframe).音频媒体文件等.接下来一段时间,浏览器等待服务器的响应以及返回的数据.待浏览器获得所有返回的数据后,经过浏览器本地的计算和渲染,最终呈现一幅完整的页面在用户眼前. 这个过程中,主要经…
1.DNS查询得到IP 输入的是域名,需要进行dns解析成IP,大致流程: 如果浏览器有缓存,直接使用浏览器缓存,否则使用本机缓存,再没有的话就是用host 如果本地没有,就向dns域名服务器查询(当然,中间可能还会经过路由,也有缓存等),查询到对应的IP 2.tcp/ip请求 http的本质就是 tcp/ip请求. 需要了解3次握手规则建立连接以及断开连接时的四次挥手. tcp将http长报文划分为短报文,通过三次握手与服务端建立连接,进行可靠传输. 3.三次握手的步骤(抽象派) 客户端:he…
网站性能优化工具大致分为两类:综合类和RUM类(实时监控用户类),WebPageTest属于综合类. WebPageTest通过布置一些特定的场景进行测试,例如不同的网速.浏览器.位置等. 测试完成后,能获得优化等级.性能参数.请求瀑布图.网页幻灯片快照等,更多信息可以参考<WebPageTest快速入门>. 一.总览 输入网址后,首先进入视野中的就是下面这张画面. 1)原理 根据WebPageTest的<概述>了解到,WebPageTest是一个PHP网站,用户输入网址.地点.自…
一.前言 开始先扯点别的: 估计很多前端er的同学应该遇到过:在旧项目中添加新的功能模块.或者修改一些静态文件时候,当代码部署到线上之后,需求方验收OK,此时你送了一口气,当你准备开始得意于自己的masterpiece时候,突然需求方跑来和你说,很多用户反应还是没有看到新的效果,或者某个图片还是旧的....what? 估计你第一反应就是,肯定是可恶的缓存搞的鬼.我遇到这样几种情况: 1.在某个旧项目中,我们的静态资源部署主要是在每次更新的时候自动添加版本号的形式,比如在后面加上版本?v=时间戳,…
浏览器工作原理:https://www.cnblogs.com/thonrt/p/10008220.html 浏览器渲染原理: https://www.cnblogs.com/thonrt/p/10008742.html 基于上面这两篇文章,我们可以把web性能优化分为两大方面: 网络传输性能优化 页面渲染性能优化 本文主要介绍网络传输性能优化. 本人总结网络传输性能优化主要有以下几个点: 减少请求数 减小请求资源体积 提升网络传输速率 下面我们来逐一击破. 1.资源打包和压缩 想要实现首屏渲染…
要彻底了解web性能优化的问题,得搞清楚浏览器的工作原理. 我们需要了解,你在浏览器地址栏中输入url到页面展示的短短几秒中,浏览器究竟做了什么,才能了解到为什么我们口中所说的优化方案能够起到优化作用. 浏览器的多进程架构(以下的例子都是以chrome为例) chrome由多个进程组成,每个进程都有自己的核心职责,每个进程又包含多个线程,一个进程内的多个线程也会协同工作,配合完成进程的职责. 说了这么多,还是来张图更直白: 进程(process)和线程(thread) 当我们启动一个应用,计算机…
压缩源代码和图片 JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG图片可以根据具体质量来压缩为50%到70%,PNG可以使用一些开源压缩软件来压缩,比如24色变成8色.去掉一些PNG格式信息等.   选择合适的图片格式 如果图片颜色数较多就使用JPG格式,如果图片颜色数较少就使用PNG格式,如果能够通过服务器端判断浏览器支持WebP,那么就使用WebP格式和SVG格式. 合并静态资源 包括CSS.JavaScript和小图片,减少HTTP请求. 开启服务…
Web性能优化已经是老生常谈的话题了, 不过笔者也一直没放在心上,主要的原因还是项目的用户量以及页面中的js,css文件就那几个,感觉没什么优化的.人总要进步的嘛,最近在被angularjs吸引着,也用了angularjs开发了一个项目,那感觉真的是谁用谁知道. angularjs的好处我就不在这里废话了,有兴趣的请自行度娘.背景是这样的, 在这个使用angularjs开发的项目中,由于自己的粗心导致页面打开很慢,傻了吧唧的引用了未压缩的js文件,将近1M的js啊,我还傻乎乎的建索引,优化sql…