web一次完整的的请求
首先从一次完整的的请求说起:(以此为例get,www,baidu.com)
1,webbrower 发出request,
2,然后解析www.baidu.com为ip,找到ip的服务器,
3,服务器处理请求资源并返回请求的内容,
4,browser接受请求内容过程,(返回内容是按顺序读取的)
4.1遇到外联css,就会并发去读取css内容(),
4.2遇到图片时,回去并发读取图片,目前浏览器的并发数为2,
4.3遇到js时则会阻塞其他请求。
4.4加载完css后,browse开始渲染页面,
4.5直到加载完页面中的文本资源,这时dom的结构已经确定,会出发 document.ready方法
4.6 browse继续加载 图片和js,完成后。页面就全部加载完成,这时会出发 window.onload()方法
来分析一下里面具体的时间开销:
1,从1--4.4 用户才开始看到页面上有内容,在这以前页面就是空白的
2,解析域名也是有一定时间开销的,如果是大机房的可以通过路由配置 dns 缓存,依赖于外部机房环境,可控性比较小。
3,这是服务器处理的时间,优化程序代码可以减少这里的时间
4,
4.1浏览器在接收完css之前,一般是不去渲染dom的,以避免无所谓的刷新和闪烁。所以直到4.4用户才真正在页面上看到内容。
4.2 浏览器的单域名并发访问数 为2,多域名下并发数没限制,可以通过定义域名别名改善
4.3 浏览器加载js时会阻塞其他请求,直到加载完成。改善的话可以把js放到页面下面去加载。
从上面的流程可以分析出以下建议:
1,减少连接数(原因:并发限制,dns开销)
2,将css放到 head中。(1,首先这符合w3c规范,2,应为css加载完后,遇到dom对象时就会直接显示,可以更快的显示页面。)
3,将js放到页面底部,(加载js时会阻塞其他请求,这段时间页面没有反映,如果js中没有write的话应该放到底部,页面渲染完后再加载js)
4,减少下载内容(网络是有速度限制的,内容越少当然加载越快)
针对上面4条建议给出具体做法:
1,使用 css sprite将小图片合并,合并css、js。使用浏览器缓存: cache-control、expires。不使用etag
2、3不用说了,上面已经解释清楚了。
4,采用gzip压缩,可以使用 jsmin 将js精简,使用工具将css,html精简,尽可能缩减图片。
按照 性能黄金法则 说明: 文本内容只占所有时间的10%-20%, 这样做以后 至少能将时间缩小40%-50%。能明显改善用户体验。
这只是一些建议参考,具体的需要你针对自己的网站进行分析,分析工具可以使用firedebug,yslow,(这两个可以集成)
yslow会直接给出你建议。
分享到:
相关推荐
web service在第一次启动时出现启动缓慢的问题,通常是指在运行或访问web service时遇到的启动延迟现象。这种问题可能会在不同的web service应用中出现,尤其是在首次连接或部署新服务时更为常见。web service是一种...
在HTTP协议方面,B/S架构采用无状态的短连接通信方式,通常一次请求就完成了一次数据交互,并在交互结束后关闭连接。这种方式适合服务大量用户,因为它可以快速响应每个用户的请求,而不是保持长连接。 网络架构的...
这是与我的博客文章对应的资源,介绍了《深入分析Java Web技术内幕》中第一章深入Web请求过程的知识框架。欢迎下载
这里,我们将详细探讨一次完整的HTTP请求所经历的7个步骤,以及与之相关的知识点。 1. **建立TCP连接**:在HTTP请求之前,Web浏览器首先需要与Web服务器建立一个可靠的传输层TCP连接。TCP(传输控制协议)是一种...
在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Class)库创建一个单文档应用程序,该程序能够向Web服务器发送HTTP请求并显示响应内容。MFC是微软为Windows平台提供的C++类库,它简化了Windows API的...
这个"海康摄像头web的demo 完整源码"提供了实现这一功能的基础框架,适用于那些希望集成海康摄像头到自己的web应用中的开发者。下面将详细介绍这个开发包的核心知识点及其可能的应用场景。 一、海康摄像头接口 ...
两次请求相同的一个URL,会产生缓存问题。 博文链接:https://weiye.iteye.com/blog/100470
WebAPI接口缓存的核心思想是基于请求-响应模式,当一个请求被发送到API接口时,如果该请求的参数与之前某次请求完全相同,那么就不再执行实际的业务逻辑,而是直接返回之前存储的响应结果。这种机制可以显著减少...
然后发送一个POST请求,并将CancelToken作为参数传递给axios,以确保当上一次请求未完成时可以取消它。如果请求被取消,错误处理函数会被触发,并能够检测到错误的类型是axios.isCancel(err),从而知道是由于取消...
文件流在这里起着关键作用,它允许我们按需读取文件并将其发送到客户端,而不是一次性加载整个文件到内存。 2. **MVC控制器**: 在ASP.NET Web API中,控制器负责处理HTTP请求并生成响应。你需要创建一个控制器方法...
2. 请求队列:手动管理请求队列,当有新的请求时,将其加入队列,只有当队列中的前一个请求完成后,才发送下一个请求。这可以通过Promise链式调用或者async/await来实现。 3. 使用Promise.all:如果所有请求都独立...
在浏览器的F12调试页面中,我们可以看到,只有一次请求,/requestDemo5请求,然后将请求转发到RequestDemo6。这说明了RequestDispatcher可以实现请求的转发,而不是重定向。 在使用Postman进行post请求时,我们可以...
我们将从标题"**c#WebServer简单示例**"和描述"**c#WebServer简单示例 这是我第一次学习webserver时候别人给的觉得非常好用!简单明白!**"出发,详细介绍相关的编程概念和技术。 首先,了解基础:Web服务器是响应...
一个完整的Ajax请求通常包括以下几个步骤: 1. 创建XMLHttpRequest对象,即XHR实例。 2. 配置请求参数,如URL、HTTP方法(GET、POST等)、是否异步等。 3. 发送请求,这通常通过调用`open()`和`send()`方法完成。 4...
在计算机网络领域,Web服务器是不可或缺的一部分,它负责接收HTTP请求并返回HTTP响应,使得用户能够访问和交互网页。本项目名为"MiniWeb",其目标是实现一个小型的Web服务器,通过TCP/IP协议栈与客户端进行通信。...
一、前言 由于项目是前后端分离,API接口与Web前端 部署在不同站点当中,因此在前文当中WebApi Ajax 跨域请求解决...第一个OPTIONS的请求是由WEB服务器处理跨域访问引发的。OPTIONS是一种预检请求,浏览器在处理跨域
7. **关闭连接**:完成一次HTTP交互后,关闭与客户端的连接,等待下一次请求。 四、编程实现 简易Web服务器可以用各种编程语言实现,例如Python的`http.server`模块、Java的`HttpServer`类或者C++的`libcurl`库。...
5. 支持HTTP长连接,允许在一次TCP连接上处理多个HTTP请求,减少连接建立和关闭的开销。 这个工具对于开发者来说非常有用,尤其在处理大量HTTP请求或者构建高性能的网络服务时,可以提高应用程序的效率和可靠性。...