节选自 http://www.zhihu.com/question/20474326

前端技术的逐渐成熟,衍生了domain hash, cookie free, css sprites, js/css combine, max expires time, loading images on demand等技术。这些技术的出现和大量使用都和并发资源数有关。

1、按照普通设计,当网站cookie信息有1 KB、网站首页共150个资源时,用户在请求过程中需要发送150 KB的cookie信息,在512 Kbps的常见上行带宽下,需要长达3秒左右才能全部发送完毕。 尽管这个过程可以和页面下载不同资源的时间并发,但毕竟对速度造成了影响。 而且这些信息在js/css/images/flash等静态资源上,几乎是没有任何必要的。 解决方案是启用和主站不同的域名来放置静态资源,也就是cookie free。

2、将css放置在页面最上方应该是很自然的习惯,但第一个css内引入的图片下载是有可能堵塞后续的其他js的下载的。而在目前普遍过百的整页请求数的前提下,浏览器提供的仅仅数个并发,对于进行了良好优化甚至是前面有CDN的系统而言,是极大的性能瓶颈。 这也就衍生了domain hash技术来使用多个域名加大并发量(因为浏览器是基于domain的并发控制,而不是page),不过过多的散布会导致DNS解析上付出额外的代价,所以一般也是控制在2-4之间。 这里常见的一个性能小坑是没有机制去确保URL的哈希一致性(即同一个静态资源应该被哈希到同一个域名下),而导致资源被多次下载。

3、再怎么提速,页面上过百的总资源数也仍然是很可观的,如果能将其中一些很多页面都用到的元素如常用元素如按钮、导航、Tab等的背景图,指示图标等等合并为一张大图,并利用css background的定位来使多个样式引用同一张图片,那也就可以大大的减少总请求数了,这就是css sprites的由来。

4、全站的js/css原本并不多,其合并技术的产生却是有着和图片不同的考虑。 由于cs/js通常可能对dom布局甚至是内容造成影响,在浏览器解析上,不连贯的载入是会造成多次重新渲染的。因此,在网站变大需要保持模块化来提高可维护性的前提下,js/css combine也就自然衍生了,同时也是minify、compress等对内容进行多余空格、空行、注释的整理和压缩的技术出现的原因。

5、随着cookie free和domain hash的引入,网站整体的打开速度将会大大的上一个台阶。 这时我们通常看到的问题是大量的请求由于全站公有header/footer/nav等关系,其对应文件早已在本地缓存里存在了,但为了确保这个内容没有发生修改,浏览器还是需要请求一次服务器,拿到一个304 Not Modified才能放心。 一些比较大型的网站在建立了比较规范的发布制度后,会将大部分静态资源的有效期设置为最长,也就是Cache-Control max-age为10年。 这样设置后,浏览器就再也不会在有缓存的前提下去确认文件是否有修改了。 超长的有效期可以让用户在访问曾访问过的网站或网页时,获得最佳的体验。 带来的复杂性则体现在每次对静态资源进行更新时,必须发布为不同的URL来确保用户重新加载变动的资源。

6、即使是这样做完,仍然还存在着一个很大的优化空间,那就是很多页面浏览量很大,但其实用户很大比例是直接就跳走了,第一屏以下的内容用户根本就不感兴趣。 对于超大流量的网站如淘宝、新浪等,这个问题尤其重要。 这个时候一般是通过将图片的src标签设置为一个loading或空白的样式,在用户翻页将图片放入可见区或即将放入可见区时再去载入。 不过这个优化其实和并发资源数的关系就比较小了,只是对一些散布不合理,或第一页底部的资源会有一定的帮助。 主要意图还是降低带宽费用。

总的来说,各类技术都是为了能让用户更快的看到页面进行下一步操作,但却不必将宝贵的资源浪费在没有必要的重复请求、不看的内容上。

转载于:https://www.cnblogs.com/liuzhenwei/p/4453249.html

和浏览器并发请求数有关的一些前端技术相关推荐

  1. 查看 并发请求数及其TCP连接状态

    服务器上的一些统计数据: 1)统计80端口连接数 netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ps -ef|grep httpd| ...

  2. 探知 浏览器并发请求个数

    起因:在工作中经常会发现浏览器请求过多,会很慢很卡,但我并不知道并发请求个数, 于是就写个例子,探知浏览器并发请求的个数. 思路:1.新建网站. 2.添加两个按钮,分别添加点击事件,请求不同接口. 3 ...

  3. 查看Apache的并发请求数及其TCP连接状态

    查看Apache的并发请求数及其TCP连接状态: Linux命令: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a] ...

  4. 并发请求数_nginx如何限制并发连接和请求数?

    简介 限制并发连接数的模块为:http_limit_conn_module,地址:http://nginx.org/en/docs/http/ngx_http_limit_conn_module.ht ...

  5. 查看http的并发请求数及其TCP连接状态

    统计80端口的连接数据 netstat -nat | grep -i "80" | wc -l 统计httpd协议连接数 ps -ef | grep httpd | wc -l 统 ...

  6. 查看Apache并发请求数及其TCP连接状态 --张宴

    [ 2007-7-20 18:30 | by 张宴 ]     [文章作者:张宴 本文版本:v1.1 最后修改:2007.07.27 转载请注明出处:http://blog.s135.com] 这两天 ...

  7. 查看httpd并发请求数及其TCP连接状态

    服务器上的一些统计数据: 1)统计80端口连接数 netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ps -ef|grep httpd| ...

  8. 浏览器并发请求数以及解决办法

    页面卡顿,需要好长一段时间才能加载完成,有可能是资源请求过多,再加上请求响应慢的原因.每个浏览器都有资源请求并发数的限制,本文内容讲 如何查看请求阻塞情况 到前端如何针对该限制进行优化. 1.如何查看 ...

  9. 浏览器对同一IP的最大并发请求数记录

    转载自http://www.iefans.net/liulanqi-zuida-bingfa-lianjieshu/,以方便查阅 版本 HTTP 1.0 服务器(宽带连接) HTTP 1.1 服务器( ...

最新文章

  1. C++添加程序到windows的启动项的代码
  2. Google 的开源方法论
  3. 但救地球要紧的飞鸽传书
  4. 苹果挥刀,iPhone 12 mini要换处理器了,无缘A14!
  5. python的高级特性3:神奇的__call__与返回函数
  6. pytorch数据读取之Dataset与DataLoader
  7. SqlSever2005 一千万条以上记录分页数据库优化经验总结【索引优化 + 代码优化】一周搞定...
  8. 如何修改android模拟器上的IMEI、IMSI、SIM card serial number
  9. Python标准库——turtle库
  10. 计算机四级网络工程师笔记
  11. Jmeter链接MySQL读写数据
  12. ISO27001体系的价值(详解)
  13. 戴尔笔记本插入耳机后声音还是外放
  14. usb共享远程服务器,USB Network Gate
  15. 在ubuntu用audacity把音频转换成256kbps,单声道。(亲测有效)
  16. opencv+ffmpeg+Qt h264录制
  17. Maven Scope 讲解
  18. java输出语句的封装
  19. 18 - java基初 数组介绍 冒泡排序
  20. C++ exit用法详解

热门文章

  1. ubuntu 安装GPU黑屏 修改GRUB_手把手教你Windows+Linux双系统的安装与卸载
  2. GraphLab:新的面向机器学习的并行框架
  3. BIRCH算法(Java实现)
  4. 圣斗士星矢服务器维护时间,《圣斗士星矢》6月27日服务器数据互通公告
  5. VS2019调试查看变量_机器人调试(六十六)
  6. mongodb 分组聚合_MongoDB学习笔记整理,赶紧收藏起来吧
  7. 相机模型与标定(一)--相机标定概述
  8. 油猴安装使用[自留]
  9. php7数组写法,数组运算符 - PHP 7 中文文档
  10. 【汇编语言】子程序结构