当前位置:首页 > CN2资讯 > 正文内容

evaluateJS

1天前CN2资讯


简介

延缓执行 JavaScript 是一个能有效提高网页加载速度以及提升用户阅读体验质量的途径。从实际经验来看,将我们的网站从经济实惠的 VPS 迁移到 Softlayer(美国著名的一个数据中心)独立服务器平台上只能给网站加载速度带来20%的提升,但是通过延缓执行 JavaScript 却能帮助提速 50% ,不妨看看 Google Webmaster 工具 > Site Performance(网站性能)的统计结果:

 

实战

网页开发遵循一个假设,就算有 JS 文件突然被中断了,只要没有 JS 执行错误,那网页就一定会被正确渲染。简单的说,延缓执行 JS 可以采取下面两种规则:

  • 等到页面 Document 准备好之后再来执行内联的 JS 代码,这些代码至少也得放在页面底部。
  • 动态地加载外部 JavaScript 文件。如果多个 JS 文件之间存在依赖,确保主要的 JS 文件引用写在网页底部以便最后加载。
  • 下面这个主页面的代码片段指出了我们如何在开发中延缓 JavaScript 的执行。 




    view source


    print ? 1 <script type="text/javascript">// <![CDATA[ 2 _lazyLoadScripts = new Array(); 3 _lazyExecutedCallbacks = new Array(); 4 // ]]></script> 5 <script type="text/javascript" src="/scripts/jquery-1.4.4.min.js"></script> 6 <script type="text/javascript" src="/scripts/website-lazy-load.js"></script>


    在开发中经常会有些嵌套网页或者构件需要依赖一些外部 JS 文件或 JS 代码的执行。在这种情况下,可以像上面例子那样在主页面顶部定义两个变量 “_lazyLoadScripts” 和 “_lazyExecutedCallbacks” 。

    在下面代码片段中,你可以看到这两个变量是如何被使用在嵌套网页或构件上的。



    01 <script type="text/javascript">// <![CDATA[ 02 _lazyExecutedCallbacks.push(function () 03 { 04 // in the case you need to execute some scripts in a nested page or module. 05 // don't execute them explicitly, but push them into the callback list. 06 }); 07 // ]]></script> 08 <script type="text/javascript">// <![CDATA[ 09 // push the external JS files into the list for deferring loading. 10 _lazyLoadScripts.push("/scripts/your-script.js"); 11 // ]]></script>

    这些被压入(push)到 “_lazyExecutedCallbacks” 里的 JS 代码和被插入到 “_lazyLoadScripts” 里的外部 JS 文件全部都会在 “website-lazy-load.js” 里被执行,执行的代码片段如下:



    01 // dynamically load external JS files when document ready 02 // dynamically load external JS files when document ready 03 function loadScriptsAfterDocumentReady() 04 { 05 if (_lazyLoadScripts && _lazyLoadScripts != null) 06 { 07 for (var i = 0; i < _lazyLoadScripts.length; i++) 08 { 09 var scriptTag = document.createElement('script'); 10 scriptTag.type = 'text/javascript'; 11 scriptTag.src = _lazyLoadScripts[i]; 12 var firstScriptTag = document.getElementsByTagName('script')[0]; 13 firstScriptTag.parentNode.insertBefore(scriptTag, firstScriptTag); 14 } 15 } 16 } 17 18 // Execute the callback when document ready. 19 function invokeLazyExecutedCallbacks() 20 { 21 if (_lazyExecutedCallbacks && _lazyExecutedCallbacks.length > 0) 22 for(var i=0; i<_lazyExecutedCallbacks.length; i++) 23 _lazyExecutedCallbacks[i](); 24 } 25 26 // execute all deferring JS when document is ready by using jQuery. 27 jQuery(document).ready(function () 28 { 29 loadScriptsAfterDocumentReady(); 30 invokeLazyExecutedCallbacks(); 31 });


    小贴士

  • 开发网页的合理步骤应该是首先编写 HTML 和 CSS 。等这些网页在浏览器里能够正确地(符合你的期望)被渲染出来之后,再开始编写 JS 代码来支持动画或者其他的效果。
  • 不要在 HTML 页面上的任何一个元素上编写 οnclick="..." 代码来绑定事件,但是可以在 HTML Document 都准备好的情况下进行绑定。这样可以避免在 JS 文件加载完成之前因用户触发了 onclick 事件而导致的 JS 错误。
  • 如果你的网站需要广泛地加载外部 JS 文件,那么将它们写在 “website-lazy-load.js” 里动态的加载进来,例如 Google Analytics tracking 的JS 文件、 Google AdSense 的JS 文件等等。
  • 这种方法同样地对 CSS 文件也有效。但是别对 主CSS 文件这么做。



    • 你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/19537.html

      标签: evaluateJS
      分享给朋友:

      “evaluateJS” 的相关文章

      BT开心版:简化Linux服务器管理的最佳工具

      BT开心版是一个强大的Linux服务器管理工具,致力于简化网站的搭建、管理和维护过程。对于那些刚接触Linux操作系统的用户来说,BT开心版的出现无疑是一大福音。它的设计理念是让每个用户无论有多少技术背景,都能高效地管理自己的网页,不必深入学习Linux系统的复杂操作。 首先,我发现BT开心版的最大...

      DirectAdmin安装全攻略:快速安装与配置指南

      DirectAdmin是一款由国外开发的虚拟主机管理系统。我第一次接触它时,就被其强大的功能和用户友好的界面所吸引。它不仅可以管理服务器,还能帮助我轻松设置EMAIL、DNS、FTP等。这种集中管理的方式大大提高了我的工作效率,尤其是对那些需要频繁处理服务器配置的用户来说,DirectAdmin无疑...

      50kvm VPS主机服务:最优性价比与便捷选择

      50kvm是一个备受推崇的VPS主机服务品牌,它因其卓越的性价比和高效的速度而广受欢迎。这个品牌提供多种不同 유형的VPS解决方案,覆盖了从美国到亚洲的多个数据中心。特别是美国波特兰的Cera (NCP)和洛杉矶C3、Cera CN2 GIA等产品,都是非常值得关注的选择。 在我了解50kvm的过程...

      便宜的国外主机推荐:性价比高的主机选择指南

      在选择国外主机服务时,价格通常是一个重要的考量因素。面对纷繁复杂的选择,我发现一些便宜且性能不错的国外主机服务,让我大为惊喜。这里,我想和大家分享几款我认为性价比非常高的国外主机。 首先,我接触到UCloud。它的起售价为34元一个月,提供包括云服务器、GPU服务器和裸金属服务器在内的多种产品。这种...

      如何选择合适的IPv6 VPS服务商与其优势分析

      当我第一次接触到IPv6 VPS时,我意识到这一概念不仅为技术界带来了全新的视野,也为我们解决互联网地址匮乏的问题提供了有效的方案。IPv6,全称为互联网协议第六版,设计的目的是为了替代现有的IPv4协议,以应对未来互联网规模的增长。IPv6不仅增加了可用的地址数量,更在安全性和效率上进行了提升,是...

      菲律宾VPS性能评测与选择指南

      在数字化时代,虚拟专用服务器(VPS)逐渐成为许多企业和开发者的首选,特别是在菲律宾这个快速发展的IT市场。菲律宾VPS的性能评测是我们了解这个市场的一把钥匙。它帮助我们不仅了解服务的速度和稳定性,还能评估不同服务提供商的优劣。 VPS性能概述 在讨论VPS性能时,我们可以将其分成几个关键方面。主要...