[英]Loading External JS Files After Mouse Move or 5 Seconds Later for Better Page Speed Optimization
我正在为我的网站使用smartsupp实时聊天脚本。 很好,但是它大大增加了我的页面加载时间。
根据gtmetrix.com,我的正常页面加载详细信息:
完全加载时间2.6s总页面大小751KB请求42
但是,当我添加此脚本时:完全加载时间20.6s总页面大小2.00MB请求66
因此,我想使用此脚本,但我不想首先加载它。 我想在访客鼠标移动或3-5秒后加载它。
您对此有什么解决方案吗? 谢谢。
默认的smartsupp代码如下:
<!-- Smartsupp Live Chat script -->
<script type="text/javascript">
var _smartsupp = _smartsupp || {};
_smartsupp.key = 'mykeynumber';
window.smartsupp||(function(d) {
var s,c,o=smartsupp=function(){ o._.push(arguments)};o._=[];
s=d.getElementsByTagName('script')[0];c=d.createElement('script');
c.type='text/javascript';c.charset='utf-8';c.async=true;c.defer=true;
c.src='//www.smartsuppchat.com/loader.js?';s.parentNode.insertBefore(c,s);
})(document);
</script>
编辑:
我认为这与我的问题无关,但我认为这也是该问题的另一方面。 根据gtmetrix.com,我也由于该脚本而出现“利用浏览器缓存”问题。 他们说:
利用浏览器缓存获取以下可缓存资源:
https://s2.smartlook.com/rec/check (expiration not specified) https://s2.smartlook.com/rec/init (expiration not specified) https://s2.smartlook.com/rec/tag (expiration not specified) https://static.smartsupp.co/chats/112939/avatar-gasqccul5z.png (expiration not specified) https://rec-src.smartlook.com/recorder.js (5 minutes) https://www.google-analytics.com/analytics.js (2 hours)
也许您可以为所有这些问题找到一个好的解决方案。 再一次非常感谢你。
您可以使用jquery库中的javascript onload本机方法或document.ready
。
很难接受这些加载时间总是相同或多或少相同,因为它取决于Internet速度和服务器功能,而不是依赖setTimeout
而是可以依赖window.onload
资源加载window.onload
触发window.onload
。
window.onload = function() {
// script for Smartsupp Live Chat
};
不幸的是,其他解决方案不适合我的问题。 所以我发现了这样的代码:
<script>
window.onload = function(){
setTimeout(loadAfterTime, 5000)
};
function loadAfterTime() {
// your code here
}
</script>
并像这样使用它:
<script>
var _smartsupp = _smartsupp || {};
_smartsupp.key = 'mykeynumber';
window.onload = function(){
setTimeout(loadAfterTime, 5000)
};
function loadAfterTime() {
window.smartsupp||(function(d) {
var s,c,o=smartsupp=function(){ o._.push(arguments)};o._=[];
s=d.getElementsByTagName('script')[0];c=d.createElement('script');
c.type='text/javascript';c.charset='utf-8';c.async=true;
c.src='//www.smartsuppchat.com/loader.js?';s.parentNode.insertBefore(c,s);
})(document);
}
</script>
之后,gtmetrix.com结果:
满载时间2.7s总页面大小650KB请求34
因此,它有效! 我向所有网站管理员推荐此解决方案。
使用jQuery可以轻松实现这一目标。 您只需在文档准备好后获取外部js文件,然后为您的外部脚本应用设置的超时功能即可。
<script>
$(document).ready(function() {
setTimeout(function() {
var _smartsupp = _smartsupp || {};
_smartsupp.key = 'mykeynumber';
window.smartsupp || (function(d) {
var s, c, o = smartsupp = function() {
o._.push(arguments)
};
o._ = [];
s = d.getElementsByTagName('script')[0];
c = d.createElement('script');
c.type = 'text/javascript';
c.charset = 'utf-8';
c.async = true;
c.defer = true;
c.src = '//www.smartsuppchat.com/loader.js?';
s.parentNode.insertBefore(c, s);
})(document);
console.log("External js file loaded");
}, 5 * 1000) //calls the external chat after 5 seconds
});
</script>
编辑#1
利用浏览器缓存不适用于外部资源:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.