我有一个样式表 ( hi-dpi.css
),它包含一堆更高分辨率的资产,其中许多是内联的(数据 URI)。但目前它会阻止页面渲染。
解决这个问题的最佳方法是什么?
也许<link rel=stylesheet>
在页面之后写标签load
?
我有一个样式表 ( hi-dpi.css
),它包含一堆更高分辨率的资产,其中许多是内联的(数据 URI)。但目前它会阻止页面渲染。
解决这个问题的最佳方法是什么?
也许<link rel=stylesheet>
在页面之后写标签load
?
将此脚本放在头部,它应该加载它而不会阻塞(测试)。
setTimeout(function () {
var el = document.createElement('link'),
sc = document.getElementsByTagName('script')[0];
el.rel = 'stylesheet';
el.href = 'hi-dpi.css';
sc.parentNode.insertBefore(el, sc);
}, 30);
如果它太大,您可能必须将其分成几部分,以便并行下载。
在我走得更远之前,我不得不问这个问题,但真的有必要在 CSS 中拥有很多“高分辨率资产”吗?我的意思是,也许这只是我,但是......
所以这是我的建议:在“原始样式表”中加载除 data-uri 之外的所有内容(以便页面渲染仍然获得图像大小以及可能声明的其他内容),但在页面末尾有第二个文件表包含所有那里有实际的数据uri。字面上是页面的最后一个元素
我不完全确定这会起作用,但它应该有助于缓解问题。
原因是渲染引擎需要知道宽度、CSS 框模型等信息才能正确渲染,但渲染图像往往需要更长的时间来处理图形引擎(这是我的理解)加上我愿意成为文件本身就很大,所以下载需要时间。因此,通过为页面提供所有 CSS box-model 等,它可以进行布局,并在最后加载图像。
您可能想阅读以下内容:http: //developer.yahoo.com/performance/rules.html
这是我的替代选项:
在当前 CSS 中加载低分辨率图像(以便页面显示某些内容)并在页脚 CSS 中加载高分辨率图像,以便它们覆盖低分辨率图像。