在 Google PageSpeed Insights 中加载速度最快的 fancyBox/jQuery v3 而不会丢失分数
The fastest loading of fancyBox/jQuery v3 without loosing scores in Google PageSpeed Insights
目前我们的一个旧网络项目中有 fancyBox v2.1.5 和 jQuery v1.11.3。它们附加到关闭 </body>
标记之前的 HTML 页面,如下所示:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='/scripts/jquery-1.11.3.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
<script type="text/javascript" src="/fancybox/jquery.fancybox.pack.js?v=2.1.5"></script>
<script type="text/javascript">
$(document).ready(function () {
$(".fancybox").fancybox({
beforeShow: function () {
var alt = this.element.find('img').attr('alt');
this.inner.find('img').attr('alt', alt);
this.title = alt;
}
});
});
</script>
</body>
fancyBox的CSS在<head>
部分是这样添加的:
<link rel="stylesheet" href="/fancybox/jquery.fancybox.css?v=2.1.5" type="text/css" media="screen" />
当我为 HTML 页面启动 Google 的 PageSpeed Insights 测试时,Google 总是提到这个 CSS 并告诉我们有 1 个阻塞 CSS 首屏内容中的资源。为了解决这个问题并使页面加载时间更好,我将升级到最新版本的 fancyBox 和 jQuery(这也会带来新功能)。
fancyBox项目的home page告诉我们如何将v3添加到HTML页:
<script src="//code.jquery.com/jquery-3.3.1.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.3.5/jquery.fancybox.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.3.5/jquery.fancybox.min.js"></script>
如果我在 </body>
结束标记之前添加这些行,是否有助于实现我的目标?在使用 fancyBox/jQuery(例如,通过在 <script>
标记中添加 async
属性或将 fancyBox/jQuery 文件托管在我们的网络服务器)?
P.S。建议的解决方案的一个可能问题是 <link>
标签应仅放置在 <head>
部分中,尽管它似乎在 HTML5 中也适用于正文(参见 this thread).
查看 Google 推荐 - https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery and this SO thread - How to load CSS Asynchronously
目前我们的一个旧网络项目中有 fancyBox v2.1.5 和 jQuery v1.11.3。它们附加到关闭 </body>
标记之前的 HTML 页面,如下所示:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='/scripts/jquery-1.11.3.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
<script type="text/javascript" src="/fancybox/jquery.fancybox.pack.js?v=2.1.5"></script>
<script type="text/javascript">
$(document).ready(function () {
$(".fancybox").fancybox({
beforeShow: function () {
var alt = this.element.find('img').attr('alt');
this.inner.find('img').attr('alt', alt);
this.title = alt;
}
});
});
</script>
</body>
fancyBox的CSS在<head>
部分是这样添加的:
<link rel="stylesheet" href="/fancybox/jquery.fancybox.css?v=2.1.5" type="text/css" media="screen" />
当我为 HTML 页面启动 Google 的 PageSpeed Insights 测试时,Google 总是提到这个 CSS 并告诉我们有 1 个阻塞 CSS 首屏内容中的资源。为了解决这个问题并使页面加载时间更好,我将升级到最新版本的 fancyBox 和 jQuery(这也会带来新功能)。
fancyBox项目的home page告诉我们如何将v3添加到HTML页:
<script src="//code.jquery.com/jquery-3.3.1.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.3.5/jquery.fancybox.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.3.5/jquery.fancybox.min.js"></script>
如果我在 </body>
结束标记之前添加这些行,是否有助于实现我的目标?在使用 fancyBox/jQuery(例如,通过在 <script>
标记中添加 async
属性或将 fancyBox/jQuery 文件托管在我们的网络服务器)?
P.S。建议的解决方案的一个可能问题是 <link>
标签应仅放置在 <head>
部分中,尽管它似乎在 HTML5 中也适用于正文(参见 this thread).
查看 Google 推荐 - https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery and this SO thread - How to load CSS Asynchronously