福哥答案2020-07-02:

简单回答:

  1. 域名解析。
  2. 建立TCP连接。
  3. 请求。
  4. 处理。
  5. 响应。
  6. 释放TCP连接。
  7. 页面渲染。

中级回答:

  1. 域名解析
    1. 浏览器DNS缓存。
    1. 操作系统DNS缓存。
    1. 路由器缓存。
    1. ISP 服务商缓存。
    1. 根服务器递归查询。
  2. 建立TCP连接。三次握手。
  3. 请求。
    请求报文格式:
    1. 请求行。
      请求方式、url、版本,比如 POST index.html / HTTP/1.1。
    1. 请求头。
      键值对,比如Connection: Keep-Alive。
    1. 空行。
    1. 请求体。
  4. 4.1. 键值对,比如Pn=2&kw=nba。
  5. 4.2. 分隔符上传文件。
    Content-Type:multipart/form-data;boundary=-----------------------------7db372eb000e2

-------------------------------7db372eb000e2
Content-Disposition: form-data; name="file"; filename="kn.jpg"
Content-Type: image/jpeg
(此处省略jpeg文件二进制数据...)
4. 处理。
5. 响应。
响应报文格式:
5.1. 响应行。
版本、状态码、描述。比如 HTTP/1.1 200 OK。
5.2. 响应头。
键值对,比如 Content-Length: 122。
5.3. 空行。
5.4. 响应体。
6. 释放TCP连接。四次挥手。
7. 页面渲染。
7.1. 构建dom树。
7.2. 构建CSSOM 树。
7.3. 构建渲染树。
7.4. 布局计算。
7.5. 渲染呈现。

有那些网站优化的方法?
①减少DNS查询:将服务器域名的ip信息加入本地host文件。
②减少http请求数量,对于图片使用雪碧图,对于html文件和css文件,js文件分别进行合并操作。
③减少下载时间:压缩图片,使用压缩应用压缩文档中的空格,删除文件多余的语句和注释,创造自己的js精简库和精简框架,使用本地浏览器缓存。
④提前渲染开始时间:将css链接放在html头部。
⑤减轻解析器的阻塞:将js链接放在body尾部。

最新文章

  1. Qt中sizeof
  2. @SuppressWarnings("deprecation")
  3. MySQL binlog 组提交与 XA(两阶段提交)
  4. bzoj 2878: [Noi2012]迷失游乐园
  5. 添加 Gradle 依赖与 build.gradle 配置初识
  6. 13年7月memory point
  7. 响应式布局设置--@media only screen and
  8. crash recovery
  9. C# datetimePicker控件格式设置
  10. POJ 3111 K Best(最大化平均值)
  11. c# winform 弹出确认消息框判断是否删除?
  12. 性能是全新的 SEO
  13. redis分页
  14. Python——Mysql
  15. 阿里云OSS 获取目录下所有文件
  16. [UE4]条件语句Select
  17. spark not contain
  18. 实现EventHandler的监测
  19. POJ 2391 Ombrophobic Bovines(二分+拆点+最大流)
  20. 自定义ContentTypeHandler在struts2-rest-2.3.16.2不生效

热门文章

  1. ES6语法——let和const
  2. centos 构建dns服务 dnsmasq
  3. MacOS系统隐藏文件操作
  4. 题解 UVA501 【Black Box】
  5. Nginx配置多个域名指向不同的端口
  6. JS获取格式为YYYY-MM-DD的当前日期
  7. 使用ASP.NET实现定时计划任务,不依靠windows服务
  8. 华东师范大学数学分析课本p294,引理3的我的更正证明
  9. NACOS安装和配置
  10. kafka笔记——kafka启动