`
flyfeel
  • 浏览: 9913 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

js 加载策略

阅读更多
JavaScript现在极其重要。一些网站使用JavaScript来增添魅力;如今的许多Web应用程序依赖它;其中一些甚至是完全用JavaScript编写而成的。我在本文中将指出一些重要的规则,介绍如何使用你的JavaScript、使用哪些工具以及你将从中得到什么好处。

  确保代码尽量简洁

  不要什么都依赖JavaScript。不要编写重复性的脚本。要把JavaScript当作糖果工具,只是起到美化作用。别给你的网站添加大量的JavaScript代码。只有必要的时候用一下。只有确实能改善用户体验的时候用一下。

  尽量减少DOM访问

  使用JavaScript访问DOM元素很容易,代码更容易阅读,但是速度很慢。下面介绍几个要点:限制使用JavaScript来修饰网页布局,把针对访问元素的引用缓存起来。有时,当你的网站依赖大量的DOM改动时,就应该考虑限制你的标记。这是改用HTML5、舍弃那些原来的XHTML和HTML4的一个充分理由。你可以查看DOM元素的数量,只要在Firebug插件的控制台中输入:document.getElementsByTagName('*').length。

  压缩代码

  要提供经过压缩的JavaScript页面,最有效的办法就是先用JavaScript压缩工具对你的代码压缩一下,这种压缩工具可以压缩变量和参数名称,然后提供因而获得的代码,使用了gzip压缩。

  是的,我没有压缩我的main.js,但你要检查有没有未经压缩的任何jQuery插件,别忘了压缩。下面我列出了压缩方面的几个方案。

  ◆ YUI压缩工具(jQuery开发团队就使用它),初学者指南

(http://www.slideshare.net/nzakas/extreme-JavaScript-compression-with-yui-compressor)、第二指南 (http://vilimpoc.org/research/js-speedup/)和官方网站(http://developer.yahoo.com/yui/compressor/)。

  ◆ Dean Edwards Packer(http://dean.edwards.name/packer/)

  ◆ JSMin(http://crockford.com/JavaScript/jsmin)

  GZip压缩:其背后的想法是,缩短在浏览器和服务器之间传送数据的时间。缩短时间后,你得到标题是Accept-Encoding: gzip,deflate的一个文件。不过这种压缩方法有一些缺点。它在服务器端和客户端都要占用处理器资源(以便压缩和解压缩),还要占用磁盘空间。

  避免eval():虽然有时eval()会在时间方面带来一些效率,但使用它绝对是错误的做法。eval()导致你的代码看起来更脏,而且会逃过大多数压缩工具的压缩。

  加快JavaScript装入速度的工具:Lab.js

  有许多出色的工具可以加快JavaScript装入的速度。值得一提的一款工具是Lab.js。

  借助LAB.js(装入和阻止JavaScript),你就可以并行装入JavaScript文件,加快总的装入过程。此外,你还可以为需要装入的脚本设置某个顺序,那样就能确保依赖关系的完整性。此外,开发者声称其网站上的速度提升了2倍。

  使用适当的CDN

  现在许多网页使用内容分发网络(CDN)。它可以改进你的缓存机制,因为每个人都可以使用它。它还能为你节省一些带宽。你很容易使用ping检测或使用Firebug调试那些服务器,以便搞清可以从哪些方面加快数据的速度。选择CDN时,要照顾到你网站那些访客的位置。记得尽可能使用公共存储库。

  面向jQuery的几个CDN方案:

  ◆ http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js——谷歌Ajax,关于更多库的信息请参阅http://code.google.com/apis/libraries/devguide.html#Libraries。

  ◆ http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js——微软的CDN

  •http://code.jquery.com/jquery-1.4.2.min.js——Edgecast (mt)。

  网页末尾装入JavaScript

  如果你关注用户,用户因互联网连接速度慢而没有离开你的网页,这是一个非常好的做法。易用性和用户放在首位,JavaScript放在末位。这也许很痛苦,但是你应该有所准备,有些用户会禁用JavaScript。可以在头部分放置需要装入的一些JavaScript,但是前提是它以异步方式装入。

  异步装入跟踪代码

  这一点非常重要。我们大多数人使用谷歌分析工具(Google Analytics)来获得统计数据。这很好。现在看一下你把你的跟踪代码放在哪里。是放在头部分?还是说它使用document.write?然后,如果你没有使用谷歌分析工具异步跟踪代码,那也只能怪你自己。

  这就是谷歌分析工具异步跟踪代码的样子。我们必须承认,它使用DOM,而不是使用document.write,这可能更适合你。它可以在网页装入之前检测到其中一些事件,这非常重要。现在想一想这种情况,你的网页甚至还没有装入,所有用户都关闭了网页。已找到了解决页面浏览量错失的办法。

  var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXXXX-XX']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/JavaScript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();

  没有使用谷歌分析工具?这不是问题,今天的分析工具提供商大多允许你使用异步跟踪。

  Ajax优化

  Ajax请求对你网站的性能有重大影响。下面我介绍关于Ajax优化的几个要点。

  缓存你的ajax

  先看一下你的代码。你的ajax可以缓存吗?是的,它依赖数据,但是你的ajax请求大多应该可以缓存。在jQuery中,你的请求在默认情况下已被缓存,不包括script和jsonp数据类型。

  针对Ajax请求使用GET

  POST类型请求要发送两个TCP数据包(先发送标题,然后发送数据)。GET类型请求只需要发送一个数据包(这可能取决于你的cookie数量)。所以,当你的URL长度不到2K,你又想请求一些数据时,不妨使用GET。

  使用ySlow

  说到性能,ySlow既简单,又极其有效。它可以对你的网站进行评分,显示哪些方面需要改正,以及应关注哪些方面。

  另外支一招:把你的JavaScript打包成PNG文件

  设想一下:把你的JS和CSS添加到图片的末尾,然后用CSS来裁切,通过一次HTTP请求来获得应用程序中所需的所有信息。

  我最近找到了这个方法。它基本上把你的JavaScript/css数据打包成PNG文件。之后,你可以拆包,只要使用画布API的getImageData()。此外,它非常高效。你可以在不缩小数据的情况下,多压缩35%左右。而且是无损压缩!我得指出,对比较庞大的脚本来说,在图片指向画布、读取像素的过程中,你会觉得有“一段”装入时间。
分享到:
评论

相关推荐

    js加载base64图片

    3. **JavaScript加载Base64图片**: 在JavaScript中加载Base64图片,通常涉及到以下几个步骤: - **转换图片为Base64**:你可以使用FileReader API读取本地图片文件,并调用其`readAsDataURL()`方法将其转换为...

    js加载页面等待效果

    综上所述,实现"js加载页面等待效果"需要结合JavaScript的事件监听、DOM操作、CSS动画、异步加载策略等多个方面知识,同时注重性能优化和用户体验设计,以确保用户在等待页面完全加载的过程中获得积极的视觉反馈。...

    页面加载中js 页面加载中js 页面加载中js

    综上所述,"页面加载中js"涉及了网页性能优化的多个方面,包括脚本的异步加载、延迟执行、资源预加载、事件监听、路由管理等策略。通过巧妙地运用这些技术,开发者可以创建出加载速度快、用户体验良好的现代Web应用...

    基于ArcGIS API for JavaScript加载百度各种类型切片地图

    总结来说,"基于ArcGIS API for JavaScript加载百度各种类型切片地图"是一个将两种强大地图服务结合的技术实践。通过BaiduLayer模块,开发者可以在ArcGIS应用中利用百度地图的丰富切片,为用户提供更加多样化的地图...

    javascript函数动态加载javascript文件

    为了避免一次性加载大量JS文件,可以采用上述动态加载策略。例如,可以先加载基础的`ExtJS`库,然后根据用户操作或特定需求,再按需加载对应的组件或功能模块。 在提供的压缩包文件中,有两个文件:`新建 文本文档....

    scriptjs异步JavaScript加载器和依赖管理器

    **script.js:异步JavaScript加载器与依赖管理器详解** 在Web开发中,JavaScript的异步加载和依赖管理是优化页面性能的关键因素。`script.js`是一个轻量级且功能强大的工具,它允许开发者实现异步加载JavaScript...

    arcgis api for js定制开发加载shp以及json.zip

    大量数据的加载可能导致页面响应变慢,这时可以使用分块加载、动态加载或服务端渲染等策略。此外,还可以通过缓存机制提高数据加载速度。 总的来说,ArcGIS API for JavaScript提供了强大的工具,使开发者能够灵活...

    js加载广告 页面加载广告

    在网页设计中,尤其是在门户站点如搜狐这样的大型网站上,利用JavaScript加载广告是常见的做法,因为这种方式可以实现动态、交互式的广告展示,提高用户体验并优化广告效果。 1. **JavaScript广告加载原理** ...

    As+lightbox+js加载图片进度

    为了提供更好的用户体验,可以采用预加载策略。在用户查看图片前,JavaScript先预加载下一张或多张图片,这样当用户切换图片时,可以快速显示出来,减少等待时间。 7. **兼容性和性能** 在实现加载进度时,需要...

    js加载页面

    首先,了解JavaScript加载页面的基本过程至关重要。当用户访问一个网页时,浏览器会解析HTML文件,并遇到`<script>`标签。这些标签可以内联包含JavaScript代码或指向外部JS文件的URL。对于外部文件,浏览器会发起...

    网页按顺序加载 最后加载js广告

    这样的加载策略有助于优化用户体验,因为主要内容可以更快地呈现给用户,而广告通常被视为非关键元素。 首先,我们来看网页的加载流程: 1. **DNS解析**:浏览器接收到URL后,会进行域名系统(DNS)解析,将域名...

    一堆演示用于不同的Web字体加载策略

    Web字体加载策略是网页设计中一个重要的考虑因素,它直接影响着页面的加载速度和用户体验。在JavaScript开发和CSS相关的领域,正确地管理Web字体的加载能够优化页面性能,避免"Flash of Unstyled Text"(FOUT)或...

    网页爬虫,网页抓取,js加载后网页抓取,超简单。

    对于JavaScript加载后的网页抓取,一种常见的解决方案是使用Headless浏览器,比如Google的Chrome提供了Headless模式,它可以在没有界面的情况下运行,执行JavaScript并返回渲染后的页面内容。另一种方法是使用像...

    js图片预加载

    通过理解其基本原理和应用jQuery插件,我们可以定制适合自己项目的需求,实现更加高效和智能的图片预加载策略。在实际开发中,应结合具体情况选择合适的预加载方法,以达到最佳的性能优化效果。

    JS异步加载图片

    因此,采用异步加载策略能有效地平衡加载速度与用户体验。 ### 基本原理 JS异步加载图片的核心思想是将图片的加载延迟到需要时,或者当用户滚动到图片即将可见的位置时。这通常通过监听滚动事件、计算图片距离视口...

    图片预加载js

    综上所述,图片预加载js是提升网页性能的重要手段,通过合理的预加载策略和JavaScript技巧,我们可以优化用户体验,减少用户等待时间,同时兼顾服务器负载。在实际项目中,应根据具体需求和场景选择合适的方法来实现...

    js分布加载

    懒加载是一种优化策略,它只在用户滚动到或接近页面上的某个元素时才加载对应的JavaScript资源。这种方式特别适用于大型应用或拥有大量脚本的网页,可以显著降低首次加载页面时的数据量,提高用户体验。例如,图片、...

    JS异步加载库

    总结,JS异步加载库是提升网页性能的关键工具,通过合理的异步加载策略,我们可以实现资源的优化管理和高效利用,同时保持良好的用户体验。自定义这样一个库需要理解异步加载的原理,掌握相关API,并关注错误处理和...

    js滚动延时加载

    3. **延时加载策略**:为了防止频繁触发加载,我们可以设置一个延时,只有当用户停止滚动一段时间后才真正加载内容。这可以通过使用`setTimeout`函数和清除定时器`clearTimeout`来实现。例如,当滚动事件触发时设置...

    vue动态加载外部依赖js代码实现

    - **按需加载**: 对于不常用的或只在特定条件下使用的功能,采用按需加载策略可以显著减少初始加载时间。 - **缓存管理**: 考虑到网络环境的不确定性,合理利用浏览器缓存机制可以有效提升用户体验。 #### 结论 ...

Global site tag (gtag.js) - Google Analytics