如何更快速加载你的JS页面

确保代码尽量简洁

不要什么都依赖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%左右。而且是无损压缩!我得指出,对比较庞大的脚本来说,在图片指向画布、读取像素的过程中,你会觉得有“一段”装入时间

时间: 2024-10-19 23:23:53

如何更快速加载你的JS页面的相关文章

Nginx做负载均衡无法加载css,js

配置完nginx,访问tomcat时发现,tomcat显示如下图: 从这个状态可以看出,猜测可能是css和js这些文件没有加载. 不仅如此,访问部署在tomcat项目的页面也是一样的,不同nginx访问tomcat下的项目时这样的: 通过nginx作为代理服务器,访问到的页面是这样的: 这些情况显然都是因为通过nginx作为负载均衡服务器时候,无法正常加载css和js这些文件而出现这样的问题,通过一番搜索和查找,修改了nginx下的nginx.conf配置文件才得以正常显示,修改的配置如下: 增

js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面

js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 , 做手机端开发时,发现一个问题,有些浏览器,在网速比较慢的情况下,js文件没有加载完,后续的调用已经开始调用了,导致出错.后来使用此法,保证了任何时候都完全是按照js的先后顺序执行的. 源码: /** * js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 * 原理:利用 ajax 异步多线程快速加载, 每个文件加载完成后存入到加载完成数组中, * 显示到页面时完全按传入的顺

JQuery 加载 CSS、JS 文件的方法有哪些?

在进行web前端开发(http://www.maiziedu.com/course/web-px/)时,我们可能会需要使用JQuery加载一个外部的css文件或者js文件,加载外部文件的方法有多种,下面具体看看各种加载方法 JS 方式加载 CSS.JS 文件: //加载 css 文件function includeCss(filename) { var head = document.getElementsByTagName('head')[0]; var link = document.cre

JavaScript模块加载框架sea.js 学习一

简单总结sea.js 学习 文件目录结构 /sea/sea.js      下载地址  http://seajs.org/docs/#downloads /sea/jquery-sea.js   下载地址 http://jquery.com/download/ /sea/sea_config.js /sea/home.jsdata.js /sea/data.js 1.html页面代码文件 <style> .ch{height:200px;width:200px;background:#ccc;

js动态加载css和js

js动态加载css和js用处挺多,特意提出来 var loadUtil = { /* * 方法说明:[动态加载js文件css文件] * 使用方法:loadUtil.loadjscssfile("http://libs.baidu.com/jquery/1.9.1/jquery.js","js") * @param fileurl 文件路径, * @param filetype 文件类型,支持传入类型,js.css */ loadjscssfile:function(

CI模板加载css和js

1.需求 ci无法加载css和js文件. 2.解决 删除..htaccess文件. 在config目录下配置base_url,并传给页面 $base_url = $this->config->item('base_url'); //通过参数传递到html页面 $this->load->view('form/myform.php', array('base_url'=>$base_url)); 参考资料:http://fc-lamp.blog.163.com/blog/stat

使用getScript()方法异步加载并执行js文件

使用getScript()方法异步加载并执行js文件 使用getScript()方法异步请求并执行服务器中的JavaScript格式的文件,它的调用格式如下所示: jQuery.getScript(url,[callback])或$.getScript(url,[callback]) 参数url为服务器请求地址,可选项callback参数为请求成功后执行的回调函数. 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E

动态加载 移除js file

动态加载.移除.替换js/css文件 stylesheetjavascriptcssfunctionnull <script language="javascript"> //动态加载一个js/css文件 function loadjscssfile(filename, filetype){ if (filetype=="js"){ var fileref=document.createElement('script') fileref.setAttri

快速加载DXF、DWG格式文件控件ABViewer

ABViewer是一种高品质,低成本,高效率的多功能设计及工程文档管理应用程序. ABViewer为您提供专业的cad文件浏览和编辑工具. 支持多种格式,如:DWG格式, DXF, DWF, Hewlett-Packard HPGL, PLT, HGL, CGM, SVG, TIFF, BMP, JPG, GIF etc 等. 具体功能: ABViewer它可以方便我们在下述几种情况下大大节省时间: 当您需要在您的MS Word 文档中导入CAD图像时 您可以获得比常规软件快两倍的CAD文件(D