`

web一次完整的的请求

阅读更多
           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应用中出现,尤其是在首次连接或部署新服务时更为常见。web service是一种...

    深入Web请求过程

    在HTTP协议方面,B/S架构采用无状态的短连接通信方式,通常一次请求就完成了一次数据交互,并在交互结束后关闭连接。这种方式适合服务大量用户,因为它可以快速响应每个用户的请求,而不是保持长连接。 网络架构的...

    深入web请求过程

    这是与我的博客文章对应的资源,介绍了《深入分析Java Web技术内幕》中第一章深入Web请求过程的知识框架。欢迎下载

    一次HTTP请求共经历7步

    这里,我们将详细探讨一次完整的HTTP请求所经历的7个步骤,以及与之相关的知识点。 1. **建立TCP连接**:在HTTP请求之前,Web浏览器首先需要与Web服务器建立一个可靠的传输层TCP连接。TCP(传输控制协议)是一种...

    WEB批量请求器(WebBatchRequest)是对目标地址批量进行快速的存活探测、Title获取.zip

    4. **批量处理**:工具的核心功能是批量处理URL列表,一次可以处理成百上千个网址,极大地提升了工作效率。这对于大型网站的维护、SEO优化或者安全扫描等工作尤其重要。 5. **自动化**:WebBatchRequest的自动化...

    向web服务器请求HTTP页面的mfc单文档程序

    在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Class)库创建一个单文档应用程序,该程序能够向Web服务器发送HTTP请求并显示响应内容。MFC是微软为Windows平台提供的C++类库,它简化了Windows API的...

    海康摄像头web的demo 完整源码,描述有使用详情

    这个"海康摄像头web的demo 完整源码"提供了实现这一功能的基础框架,适用于那些希望集成海康摄像头到自己的web应用中的开发者。下面将详细介绍这个开发包的核心知识点及其可能的应用场景。 一、海康摄像头接口 ...

    两次请求相同的一个URL,会产生缓存问题。

    两次请求相同的一个URL,会产生缓存问题。 博文链接:https://weiye.iteye.com/blog/100470

    webapi接口缓存组件

    WebAPI接口缓存的核心思想是基于请求-响应模式,当一个请求被发送到API接口时,如果该请求的参数与之前某次请求完全相同,那么就不再执行实际的业务逻辑,而是直接返回之前存储的响应结果。这种机制可以显著减少...

    vue axios请求频繁时取消上一次请求的方法

    然后发送一个POST请求,并将CancelToken作为参数传递给axios,以确保当上一次请求未完成时可以取消它。如果请求被取消,错误处理函数会被触发,并能够检测到错误的类型是axios.isCancel(err),从而知道是由于取消...

    Web Api 通过文件流 下载文件到本地实例

    文件流在这里起着关键作用,它允许我们按需读取文件并将其发送到客户端,而不是一次性加载整个文件到内存。 2. **MVC控制器**: 在ASP.NET Web API中,控制器负责处理HTTP请求并生成响应。你需要创建一个控制器方法...

    QD [v20230821] —— HTTP请求定时任务自动执行框架 base on HAR Editor-qd.zip

    这通常通过CRON表达式实现,允许用户设置复杂的定时规则,例如每小时、每天或每周执行一次。 ### 4. **自动化执行** 框架负责监控配置的定时任务,并在达到预设时间时自动执行HTTP请求。执行过程中,QD会遵循HAR...

    解决Ajax 发送多个请求引发的并发问题

    2. 请求队列:手动管理请求队列,当有新的请求时,将其加入队列,只有当队列中的前一个请求完成后,才发送下一个请求。这可以通过Promise链式调用或者async/await来实现。 3. 使用Promise.all:如果所有请求都独立...

    Java中Request请求转发详解

    在浏览器的F12调试页面中,我们可以看到,只有一次请求,/requestDemo5请求,然后将请求转发到RequestDemo6。这说明了RequestDispatcher可以实现请求的转发,而不是重定向。 在使用Postman进行post请求时,我们可以...

    c#WebServer简单示例

    我们将从标题"**c#WebServer简单示例**"和描述"**c#WebServer简单示例 这是我第一次学习webserver时候别人给的觉得非常好用!简单明白!**"出发,详细介绍相关的编程概念和技术。 首先,了解基础:Web服务器是响应...

    ajax请求一次却执行两次.zip

    一个完整的Ajax请求通常包括以下几个步骤: 1. 创建XMLHttpRequest对象,即XHR实例。 2. 配置请求参数,如URL、HTTP方法(GET、POST等)、是否异步等。 3. 发送请求,这通常通过调用`open()`和`send()`方法完成。 4...

    MiniWeb代码——WebServer实现

    在计算机网络领域,Web服务器是不可或缺的一部分,它负责接收HTTP请求并返回HTTP响应,使得用户能够访问和交互网页。本项目名为"MiniWeb",其目标是实现一个小型的Web服务器,通过TCP/IP协议栈与客户端进行通信。...

    Nginx 解决WebApi跨域二次请求以及Vue单页面的问题

    一、前言 由于项目是前后端分离,API接口与Web前端 部署在不同站点当中,因此在前文当中WebApi Ajax 跨域请求解决...第一个OPTIONS的请求是由WEB服务器处理跨域访问引发的。OPTIONS是一种预检请求,浏览器在处理跨域

Global site tag (gtag.js) - Google Analytics