哪些地方会出现css阻塞,哪些地方会出现js阻塞?
2024-08-24 22:55:55
j
s的阻塞特性:
所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。
直到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。
为了提高用户体验,新一代浏览器都支持并行下载JS,但是JS下载仍然会阻塞其它资源的下载(例如.图片,css文件等)。
*由于浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以就会阻塞其他的下载和呈现。
*嵌入JS会阻塞所有内容的呈现,而外部JS只会阻塞其后内容的显示,2种方式都会阻塞其后资源的下载。
也就是说外部样式不会阻塞外部脚本的加载,但会阻塞外部脚本的执行。
CSS怎么会阻塞加载了?
CSS本来是可以并行下载的,在什么情况下会出现阻塞加载了(在测试观察中,IE6下CSS都是阻塞加载)
*当CSS后面跟着嵌入的JS的时候,该CSS就会出现阻塞后面资源下载的情况;
*而当把嵌入JS放到CSS前面,就不会出现阻塞的情况了。
根本原因:
*因为浏览器会维持html中css和js的顺序,样式表必须在嵌入的JS执行前先加载、解析完。
*而嵌入的JS会阻塞后面的资源加载,所以就会出现上面CSS阻塞下载的情况。
嵌入JS应该放在什么位置?
1、放在底部,虽然放在底部照样会阻塞所有呈现,但不会阻塞资源下载。
2、如果嵌入JS放在head中,请把嵌入JS放在CSS头部。
3、使用defer(只支持IE)
4、不要在嵌入的JS中调用运行时间较长的函数,如果一定要用,可以用`setTimeout`来调用
最新文章
- eclipse发布web项目到生产环境的方式汇总(tomcat)
- Knockout.js随手记(3)
- python 编辑xml中namespace问题中出现很多ns0
- 解迷宫的C++的未完善编程代码........请大神们帮忙改善下.........
- hdu5412——CRB and Queries
- CentOS 7下关于systemd的一些唠叨话二:systemd服务脚本的编写
- 不用ide编译java程序时调用jar包
- ASP.NET 5 :上传文件(转)
- c++将引用作为函数的参数---6
- 让Eclipse使用新版本的JRE
- STM32随记
- php判断手机移动设备访问
- MVC中的Ajax(AjaxHelper)
- bootstrap你让前端小狮子们又喜又恨
- python闭包以及装饰器
- rsync unison+inotify双向实时同步
- 基于Dapper的分页实现,支持筛选,排序,结果集总数,非存储过程
- Sping4之注入参数
- codeforces498C
- 【接口时序】3、UART串口收发的原理与Verilog实现