0

我使用托管在 CDN 上的外部 JavaScript 库。

一些用户报告说,当他们第一次访问需要这个库的页面时,加载和渲染内容需要一些时间(该库渲染 LaTeX)。

我想知道我是否可以通过在其他页面到达实际使用它的页面之前(预)加载这个库来优化他们的体验。这样一来,我希望浏览器能早点缓存这个库,这样以后渲染可能会更快。

PS 有问题的库是 MathJax。

4

2 回答 2

2

由于您特别对 MathJax 感兴趣,因此仅加载它不会为您带来那么多性能。(虽然 MathJax 将被缓存,如果您使用 MathJax CDN,您的用户可能在访问其他站点时已经缓存了它。)

有两个原因导致您可能看不到性能大幅提升。

首先,MathJax 动态加载它的大部分组件。例如,MathJax webfonts 只有在用户系统上没有安装兼容字体时才会被加载,并且它们也被分成几个部分,只有在 MathJax 实际遇到字符时才会加载。其他组件也是如此。这也意味着在没有任何数学运算的页面上,加载 MathJax 对缓存的帮助不大。

话虽如此,MathJax 组件的实际下载可以通过使用以 结尾的组合配置文件之一进行一些优化-full,请参阅MathJax 文档

然而,真正影响性能的是排版。MathJax 输出取决于您的内容以及用户的屏幕、浏览器和操作系统组合。计算最佳拟合以及插入和重排内容都是一个具有一些基本限制的问题(IE8 在标准模式下做得特别糟糕)。

PS:如果您有隐藏或动态内容,您可能需要查看配置选项skipStartupTypeset: true;请参阅MathJax 文档

[免责声明:我是 MathJax 的一员]

于 2012-12-17T00:57:55.420 回答
0

如果您在页面末尾添加调用库的脚本标记(就在 html 结束标记之前),则其他所有内容都将在它之前加载,并且用户可以在库仍在加载时开始使用该页面。

编辑:这允许您在另一个页面上“预加载”库而不会减慢它的速度。

于 2012-12-15T14:46:18.610 回答