首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端性能优化——桌面浏览器前端优化策略

例如同一个域名CDN服务器上的a.js,b.js,c.js就可以按如下方式在一个请求中下载。...使用defer时,加载后续文档元素的过程和main.js的加载是并行的,但是main.js的执行要在页面所有元素解析完成之后才开始执行。...16.消除阻塞渲染的CSS及JavaScript 对于页面中加载时间过长的CSS或JavaScript文件,需要进行合理拆分或延后加载,保证关键路径的资源能快速加载完成。...2.JavaScript资源引用放到HTML文件底部 JavaScript资源放到HTML文档底部可以防止JavaScript的加载和解析执行对页面渲染造成阻塞。...6.避免运行耗时的JavaScript 长时间运行的JavaScript会阻塞浏览器构建DOM树、DOM渲染树、渲染页面。

1.6K60

高性能前端架构解决方案

减少渲染阻塞的请求 css 和(默认情况下) script 文件会阻止其下方的任何内容渲染。...你可以通过以下几种方法来解决此问题: 将脚本标签放在 body 标签的底部 使用 async 异步加载 script 内联使用小型的 JS 或 CSS 代码段(如果需要同步加载) 避免顺序渲染阻塞请求链...但是如果你不介意旧的浏览器使用系统字体,那么你可以复制粘贴 CSS 文件的内容。) 即使页面开始呈现后,用户仍可能无法对该页面执行任何操作,因为在加载字体之前,不会显示任何文本。...对于这两种技术,你都需要知道在应用开始呈现之前页面必须加载哪些数据。对于与用户相关的数据(用户名,通知 ...),这往往很容易,但是对于特定于页面的内容,则比较棘手。...如果你能够将呈现的HTML缓存在服务器上并将其提供给所有用户而又不会延迟初始文档请求,那么它也将有所帮助。例如,如果你使用 React 来渲染博客文章,则服务器渲染非常合适。

2.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    前端进阶笔记之核心基础知识---那些HTML标签你熟悉吗?

    为了减少这些时间损耗,可以借助script标签的三个属性来实现: async属性:立即请求文件,但不阻塞渲染引擎,而是文件加载完成后,再阻塞渲染引擎并立即执行文件内容。...所以这也就是为什么构建工具会把编译好的引用JavaScript代码的script标签放入到body标签底部。...因为当渲染引擎执行到body底部时,会先将已解析的内容渲染出来,然后再去请求相应的JavaScript文件。...为了让搜索引擎更好的识别页面,除了描述信息之外还可以使用关键字,这样即使页面其他地方没有包含搜索内容,也可以被搜索到(当然搜索引擎有自己的权重和算法,如果滥用关键字是会被降权的,比如Google引擎会对堆砌大量相同关键词的网页进行惩罚...当我们搜索关键字“垂直互联网招聘”的时候搜索结果会显示拉勾网的信息,虽然显示的搜索内容上并没有看到“垂直互联网招聘”字样,实际上因为拉勾网页面中设置了这个关键字。

    74540

    JS相关概念

    1、CSS和JS在网页中的放置顺序是怎样的? (1)CSS 对于谷歌浏览器和Safari放在head里或body里都一样。因为它是在全部的样式表完全加载下来之后才开始渲染页面,将内容呈现在页面上。...如果JS文件很大则应该放在后面body的闭合标签之前。 因为在加载 JavaScript时会阻止其他内容的下载,要等到JS文件下载解析完之后才会显示网页内容。...而IE、Chrome、Safari则是在全部的样式表完全加载下来之后才开始渲染页面样式将内容呈现在页面上,没下载完之前页面是空白的。...导致白屏的原因: 样式文件放在底部,对于IE浏览器,在某些场景下(新窗口打开,刷新等)页面会出现白屏 使用 @import 标签, 即使 CSS 放入 link, 并且放在头部,也可能出现白屏 把 JavaScript...放入页面顶部也会导致白屏现象,在加载 JavaScript 时,会禁用并发,并且阻止其他内容的下载 导致FOUC的原因 : 把样式放在底部,对于IE浏览器,在某些场景下(点击链接,输入URL,使用书签进入等

    1.6K20

    高频前端开发面试问题

    设立”严格模式”的目的,主要有以下几个: - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安全之处,保证代码运行的安全; - 提高编译器效率,增加运行速度...**js的阻塞特性:**所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。直到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。...由于浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以就会阻塞其他的下载和呈现。 嵌入JS会阻塞所有内容的呈现,而外部JS只会阻塞其后内容的显示,2种方式都会阻塞其后资源的下载。...而嵌入的JS会阻塞后面的资源加载,所以就会出现上面CSS阻塞下载的情况。 嵌入JS应该放在什么位置? 1、放在底部,虽然放在底部照样会阻塞所有呈现,但不会阻塞资源下载。...3、使用defer(只支持IE) 4、不要在嵌入的JS中调用运行时间较长的函数,如果一定要用,可以用`setTimeout`来调用 Javascript无阻塞加载具体方式 将脚本放在底部。

    1.4K10

    一篇文章带你搞定JavaScript 性能调优

    从加载上优化:合理放置脚本位置 由于 JavaScript 的阻塞特性,在每一个出现的时候,无论是内嵌还是外链的方式,它都会让页面等待脚本的加载解析和执行, 并且标签可以放在页面的...或者中,因此,如果我们页面中的 css 和 js 的引用顺序或者位置不一样,即使是同样 的代码,加载体验都是不一样的。...尽管脚本下载会阻塞另一个脚本,但是页面的大部分内容都已经下载完 成并显示给了用户,因此页面下载不会显得太慢。这是雅虎特别性能小组提出的优化 JavaScript 的首要规则:将脚本放在底部。...从请求次数上优化:减少请求次数 由于每个标签初始下载时都会阻塞页面渲染,所以减少页面包含的标签数量有助于改善这一情况。这不仅针对外链脚本,内嵌脚本的数量同样也要限制。...总结 减少 JavaScript 对性能的影响有以下几种方法: 将所有的标签放到页面底部,也就是闭合标签之前,这能确保在 脚本执行前页面已经完成了渲染。

    69010

    Web前端性能优化教程03:网站样式和脚本&减少DNS查找、避免重定向

    将没有立即使用的css放在底部是错误的做法 通常组件的下载是按照文档中出现的顺序下载的,所以将不需要立即使用到的组件css(比如需要用户点击登录弹出框需要用到的样式)放在底部,可以得到一个加载很快的页面...无样式内容的闪烁 这里将讨论另外一种出现的情况,当我们将css放在底部,页面可以正常逐步呈现,但在css下载并解析完毕之后,已经呈现的文字和图片就要用新的样式重绘了,这就是“无样式内容的闪烁”,这将是一种不好的用户体验...脚本阻塞下载 并行下载组件能加快页面的加载速度,然而,在下载脚本的时候并行下载实际上是被禁用的,即使其他组件使用了不同的主机名,浏览器也不会启动其他的下载。原因如下:1....最佳做法 放置脚本的最好地方是页面的底部,这不会阻止页面内容的呈现,而且页面的可视化组件可以尽早下载。...综合来讲,我们一般推荐使用外置的js和css,不过这也要根据自身web的访问场景以及PV做出最优选择。 如何划分组件?

    3.2K130

    轻松改善您网站上最大的内容绘制 (LCP)

    如何优化最大内容绘制 (LCP) 在下面提到的所有技术中减少 LCP 的基本原理是减少下载到用户设备上的数据并减少发送和执行该内容所需的时间。...减少服务器响应时间 如果您的服务器需要很长时间来响应请求,那么在屏幕上呈现页面所需的时间也会增加。因此,它会对每个页面速度指标产生负面影响,包括 LCP。...5、优化LCP客户端渲染 任何客户端呈现的网站都需要大量的 Javascript 才能在浏览器中加载。...如果您不优化发送到浏览器的 Javascript,则在 Javascript 下载并执行之前,用户可能看不到或无法与页面上的任何内容进行交互。...1.使用服务端渲染 您可以在服务器上动态生成页面,然后将其发送到客户端的设备,而不是将整个 JS 传送到客户端并在那里进行所有渲染。这会增加生成页面所需的时间,但会减少在浏览器中激活页面所需的时间。

    4.3K20

    高频前端开发面试问题及答案整理

    设立”严格模式”的目的,主要有以下几个: - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安全之处,保证代码运行的安全; - 提高编译器效率,增加运行速度...**js的阻塞特性:**所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。直到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。...由于浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以就会阻塞其他的下载和呈现。 嵌入JS会阻塞所有内容的呈现,而外部JS只会阻塞其后内容的显示,2种方式都会阻塞其后资源的下载。...而嵌入的JS会阻塞后面的资源加载,所以就会出现上面CSS阻塞下载的情况。 嵌入JS应该放在什么位置? 1、放在底部,虽然放在底部照样会阻塞所有呈现,但不会阻塞资源下载。...3、使用defer(只支持IE) 4、不要在嵌入的JS中调用运行时间较长的函数,如果一定要用,可以用`setTimeout`来调用 Javascript无阻塞加载具体方式 将脚本放在底部。

    1.5K20

    网站优化之静态资源优化

    DOM Tree 渲染,也会阻塞后面 JS 执行。...• JS 引用放在 HTML 底部 • 防止 JS 的加载、解析、执行对阻塞页面后续元素的正常渲染。 ...• 增加首屏必要的 CSS 和 JS      • 页面如果需要等待所的依赖的 JS 和 CSS 加载完成才显示,则在渲染过程中页面会一直显 示空白,影响用户体验,建议增加首屏必要的 CSS 和 JS,...• 应用于: 缓存静态文件内容 JavaScript /CSS(比如百度M站首页)      • 缓存不常变更的 API 接口数据      • 储存地理位置信息      • 浏览在页面的具体位置 ...• 通常控制 DOM 大小的技巧包括:      • 合理的业务逻辑      • 延迟加载即将呈现的内容  简化 DOM 操作      • 对DOM节点的操作统一处理后,再统一插入到 DOM Tree

    1.7K10

    这么多前端优化点你都记得住吗?

    例如同一个域名 CDN 服务器上的 a.js,b.js,c.js 就可以按如下方式在一个请求中下载。...使用 defer 时,加载后续文档元素的过程和 main.js 的加载是并行的,但是 main.js 的执行要在页面所有元素解析完成之后才开始执行。...16.消除阻塞渲染的 CSS 及 JavaScript 对于页面中加载时间过长的 CSS 或 JavaScript 文件,需要进行合理拆分或延后加载,保证关键路径的资源能快速加载完成。...2.JavaScript 资源引用放到 HTML 文件底部 JavaScript 资源放到 HTML 文档底部可以防止 JavaScript 的加载和解析执行对页面渲染造成阻塞。...但是需要注意的是,iconfont 引用不同 webfont 格式时的兼容性写法,根据经验推荐尽量按照以下顺序书写,否则不容易兼容到所有的浏览器上。

    1.7K51

    前端性能优化(PC版)

    减少HTTP请求次数 建议尽可能的根据需要去合并静态资源图片、JavaScript代码和CSS文件,减少页面请求数,这样可以缩短页面首次访问的等待时间,另外也要尽量的避免重复资源,防止增加多余的请求 2...异步的加载JavaScript资源 异步的JavaScript资源不会阻塞文档解析,所以浏览器会优先渲染页面,延迟加载脚本执行。...消除阻塞页面的CSS和JS 对于页面中加载时间过长的CSS或JS文件,需要进行合理的拆分或者延后加载,保证关键的资源能快速加载完成 17. 避免使用CSS import 引用加载CSS 18....JavaScript文件引用放到HTML文件底部 可以防止JavaScript的加载和解析执行对页面渲染造成阻塞。...避免运行耗时的JavaScript 长时间运行的JavaScript会阻塞浏览器构建DOM树、DOM渲染树、渲染页面。

    88440

    前端技术提高页面加载速度

    七、删除任何不必要的元素 可能这是所有技巧中最显而易见的一个,但是它也是最容易忘记的一个技巧。如果您真正需要在网页上放置许多内容,考虑将网页分为 2 个、3 个或更多的独立页面。...但是请注意:不是所有浏览器都支持压缩。即使是支持压缩的浏览器,压缩和解压缩都会加重处理器的负载。...如果将 JavaScript 代码放在页面底部,(在大多数情况下)它将在最后下载,这时所有其他组件都已下载完。...,浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以 就会阻塞其他的下载和呈现....外部JS会阻塞所有内容的呈现 嵌入式的JS会阻止其后内容的显示 当CSS后面跟着嵌入的JS的时候,该CSS就会出现阻塞后面资源下载的情况

    3.6K20

    前端 Web 性能清单

    提高 Web 应用程序的性能是很重要的。我们希望页面加载得更快、更流畅,并且没有太多的布局变化。在这篇文章中,我想将关于这些的所有知识一一列出来。...消除渲染阻塞资源 资源阻止了页面的第一次绘制。考虑内联交付关键的 JS/CSS 并推迟所有非关键的 JS/样式。你可以通过仅提供所需的代码和样式来减小页面的大小。...确定关键代码后,将该代码从呈现阻止 URL 移动到 HTML 页面中的内联脚本标记。 在 HTML 页面头部的样式块中内嵌第一次绘制所需的关键样式,并使用预加载链接异步加载其余样式。...要消除不必要的 JavaScript,你可以使用前面提到的 Terser 或利用Tree Shaking来消除死代码。你还可以使用代码拆分,它将代码拆分为可以按需加载的包。...图像元素具有明确的宽度和高度 在图像元素上设置明确的宽度和高度,以减少布局偏移并改善 CLS。 预加载最大内容绘画 (LCP) 预加载 LCP 元素使用的图像以缩短 LCP 时间。

    1K30

    浏览器渲染原理及流程

    JavaScript引擎线程 JS为处理页面中用户的交互,以及操作DOM树、CSS样式树来给用户呈现一份动态而丰富的交互体验和服务器逻辑的交互处理。...因此如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。 3....现在界面上流行的一些效果,比如树状目录的折叠、展开(实质上是元素的显示与隐藏)等,都将引起浏览器的 reflow。...HTML 显然是必需的,因为包括我们希望显示的文本在内的内容,都在 DOM 中存放,那么可以从 CSS 上想办法。 最容易想到的当然是精简 CSS 并尽快提供它。...长耗时的JS代码放到Web Workers中执行 JS代码运行在浏览器的主线程上,与此同时,浏览器的主线程还负责样式计算、布局、绘制的工作,如果JavaScript代码运行时间过长,就会阻塞其他渲染工作

    4.6K32

    桌面端前端性能优化策略

    src 属性为空时,浏览器在渲染的过程中仍会将 href 属性或 src 属性中的空内容进行加载,直至加载失败,这样就阻塞了页面中其他资源的下载进程,而且最终加载到的内容是无效的,因此要尽量避免 //...使用 defer 时,加载后续文档元素的过程和 main.js 的加载是并行的,但是 main.js 的执行要在页面所有元素解析完成之后才开始执行。...消除阻塞渲染的 CSS 及 JavaScript 对于页面中加载时间过长的 CSS 或 JavaScript 文件,需要进行合理拆分或延后加载,保证关键路径的资源能快速加载完成 避免使用 CSS import...文档 head 中,这样浏览器可以优先下载 CSS 并尽早完成页面渲染 JavaScript 资源引用放到 HTML 文件底部 JavaScript 资源放到 HTML 文档底部可以防止 JavaScript...避免运行耗时的 JavaScript 长时间运行的 JavaScript 会阻塞浏览器构建 DOM 树、DOM 渲染树、渲染页面。

    2K20

    页面有点卡,你知道原因和解决方案吗?

    2 解决方案 对HTTP传输进行压缩,主要通过以下方式: 即在js,css、图片等资源已经压缩的基础上,在HTTP传输过程中的再次压缩。...gzip使用无损压缩,压缩效果最佳,已经成为使用最为普遍、支持的浏览器最多的数据压缩格式。 三 原因三 1 原因 JavaScript脚本过大,阻塞了页面的加载。...2 解决方案 将JavaScript脚本放在标签前,script没有async和defer时,JS文件将在下载后立即执行。...这种情况下,script放在顶部会阻塞页面呈现,在网速慢的情况下会导致“白屏”,直到脚本下载完毕才继续呈现页面。因此,script放在底部可以让页面尽快呈现。...四 原因四 1 原因 CSS、JavaScript、图片等需要重复加载。 2 解决方案 静态资源统一放在一个静态域名上,减轻重复下载静态资源的负担。

    93110

    前端性能优化-雅虎军规35条

    实现页面有秩序地加载,这对于拥有较多内容的页面和网速较慢的用户来说更为重要,同时,HTML规范清楚指出样式表要放包含在页面的区域内; 7、把JS放到底部 HTTP/1.1 规范建议,浏览器每个主机名的并行下载内容不超过两个...18、延迟加载 确定页面运行正常后,再加载脚本来实现如拖放和动画,或者是隐藏部分的内容以及折叠内容等。 19、预加载 关注下无条件加载,有条件加载和有预期的加载。...21、根据域名划分页面内容 很显然, 是最大限度地实现平行下载 22、尽量减少iframe的个数 考虑即使内容为空,加载也需要时间,会阻止页面加载,没有语意,注意iframe相对于其他DOM元素高出1-...2个数量级的开销,它会在典型方式下阻塞onload事件,IE和Firefox中主页面样式表会阻塞它的下载。...它是必定存在的,因为即使你不关心它是否有用,浏览器也会对它发出请求,因此最好不要返回一 个404 Not Found的响应。由于是在同一台服务器上,它每被请求一次coockie就会被发送一次。

    1.2K50

    网络性能优化常用方法有_防御网络监听常用方法是

    图片 混淆压缩js代码 服务器端启用gzip压缩 4.启用缓存 5.页面内部优化 css置顶 —- 为避免当页面变化时重绘页面元素,浏览器会阻塞页面呈现,直到样式表解析完毕 js置底 —...- script元素会阻塞后续内容的解析,因为script中可以同过document.write来更改页面 不会缩短加载时间,但会减少页面呈现时间 白屏时间 fetchStart — app-cache...其余的 80%~90% 时间花在了下载页面中的所有组件中; 另外一点是,优化后台需要花费比较大的成本,优化前端只需要适当地遵循一些法则会有较大的提升,相对低成本高收益 提高前端性能的黄金法则...避免使用CSS表达式(Expression) 用代替@import 避免使用滤镜 四、 JavaScript部分 把脚本置于页面底部 使用外部JavaScript和CSS 削减JavaScript...移动端使用zepto库,不允许使用jquery 给js代码一个全局命名空间,举个例子,我们的项目是某个自行车官网,全局命名空间就叫bike,和本项目有关的所有js方法,函数,变量,全部挂在bike

    75110

    京东前端高频面试题汇总

    async 函数调用不会造成阻塞,它内部所有的阻塞都被封装在一个 Promise 对象中异步执行。...问题描述: 两个块级元素的上外边距和下外边距可能会合并(折叠)为一个外边距,其大小会取其中外边距值大的那个,这种行为就是外边距折叠。...(1)兄弟之间重叠底部元素变为行内盒子:display: inline-block底部元素设置浮动:float底部元素的position的值为absolute/fixed(2)父子之间重叠父元素加入:...除了浏览器主窗⼝显示的您请求的⻚⾯外,其他显示的各个部分都属于⽤户界⾯。浏览器引擎 在⽤户界⾯和呈现引擎之间传送指令。呈现引擎 负责显示请求的内容。...如果请求的内容是 HTML,它就负责解析 HTML 和 CSS 内容,并将解析后的内容显示在屏幕上。⽹络 ⽤于⽹络调⽤,⽐如 HTTP 请求。其接⼝与平台⽆关,并为所有平台提供底层实现。

    54030
    领券