是否可以指示浏览器首先绘制页面的哪些元素
Is it possible to direct which elements of a page are painted first by the browser?
我想知道是否有任何方法可以控制浏览器绘画,例如,我想先在页面顶部加载元素,以便用户可以立即看到内容。页面底部的元素可以最后加载,因为用户在向下滚动之前不会看到它们。
我希望优化我的网站,该网站目前有 6 秒的加载时间,我想将其缩短到 1 秒。这主要是由JS和图像引起的。我知道减少这两个将意味着我不需要担心指导绘画,但出于兴趣,我只是想知道这是否可能?
抱歉,如果我对浏览器绘画的理解非常基本
这并不难。 您所需要的只是 Ajax。 加载初始标记,然后通过 Ajax 加载页面的其余部分。
只需加载带有您最初想要向用户显示的标记的页面。 然后,当用户向下滚动时,您可以进行 Ajax 调用并获取 XML 或 JSON 或 HTML 文件并将它们呈现在您的页面上,例如:
$(window).on( "scroll" , function() {
var $document = $(document);
var $window = $(this);
if( $document.scrollTop() >= $document.height() - $window.height() - 400 ) {
//make ajax call here and load the data
}
});
另请阅读此内容
在进一步研究之后,我找到了这篇文章
http://www.feedthebot.com/pagespeed/prioritize-visible-content.html
这提供了一种很好的方法来指导首先呈现页面的哪些部分。通过将内容分为首屏和首屏内容,您可以决定首先需要交付的内容,即您的主要内容而不是侧边栏广告。使用内联样式显示首屏内容将使其显示得非常快,因为它不需要等待外部请求。
但这只适用于简单的CSS,如果页面需要复杂的CSS,那么最好使用外部文件,因为:
"当你使用外部CSS文件时,整个文件被浏览器缓存(记住),所以当用户转到你网站上的另一个页面时,它不必一遍又一遍地采取相同的步骤。当您内联 CSS 时,不会发生这种情况,并且当访问者转到您网站的另一个页面时,会再次读取 CSS 并对其执行操作。如果您的 CSS 又小又简单,这无关紧要。如果你的CSS是大而复杂的,就像它们经常趋向的那样,那么你可能需要考虑你的CSS缓存是一个更好的选择。
http://www.feedthebot.com/pagespeed/inline-small-css.html
- Html画布绘制速度因画布元素过多而减慢
- 画布-绘制的线,但没有显示在谷歌检查元素
- 在元素上绘制边框,但不捕获事件
- 如何在画布元素上绘制视频
- 绘制DOM元素:鼠标事件会被背景元素混淆
- 未捕获的类型错误:对象#<HTML对象元素>没有方法'重新绘制工作流'
- 使用javascript绘制多个以数组元素为文本中心的圆
- 是否可以指示浏览器首先绘制页面的哪些元素
- 如何在正确的位置绘制画布元素
- 如何确定浏览器何时完成绘制插入的元素
- 在画布元素上动态绘制
- 如何在拉斐尔中获取绘制的矩形元素
- 如何在带有触摸的PhoneGap中的画布元素上绘制
- 为什么ctx.drawImage只将视频元素的一部分绘制到画布上
- 在重新排序DOM时,如何重新绘制和重新组织同位素容器中的元素
- Javascript 将动态图像从 URL 绘制到画布元素上
- 为什么画布绘制图像在使用 dom 图像元素时不起作用
- 使用数据表(Meteor Tabular)在新行中绘制数组的每个元素
- 如何绘制多条线,数组的每个元素一条线包含vega规范数据中的y值
- SVG:在子元素内部绘制