确保代码尽量简洁

不要什么都依赖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页面相关推荐

  1. thymeleaf加载不了js引用_网站首页加载慢解决方案

    打开网页,用户最满意的时间是2-5秒,如果用户等待超过10秒,99%的用户会关闭这个网页.那么,是什么原因会导致网站打开慢?又有什么办法解决呢?一般来说,http请求过多.网页过大.服务器性能过差等等 ...

  2. glide 加载webp_如何使您的网站通过WebP图像快速加载闪电

    glide 加载webp by Carmen Chung 通过钟Car 如何使您的网站通过WebP图像快速加载闪电 (How to make your website load lightning f ...

  3. 在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据

    在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据 如今,最流行的拍照设备智能手机可以捕获高达4K UHD的图像(3840×2160图像),原始数据超过25 MB.即使 ...

  4. yii 加载php文件,Yii2框架加载css和js文件的方法分析

    本文实例讲述了Yii2框架加载css和js文件的方法.分享给大家供大家参考,具体如下: 1.第一步是要把我们的css.js文件放到web目录下 2.第二步修改assets/AppAsset.php文件 ...

  5. CEF3—在网页加载前给js对象填值

    文章目录 CEF3-在网页加载前给js对象填值 前言 思路 代码 CEF3-在网页加载前给js对象填值 前言 记录一次笔者在实际开发中遇到的问题.在用cef做多页应用开发的时候,多个单页共享数据的问题 ...

  6. vue“路由懒加载” 技术,让网页快速加载 (优化篇)

    (含代码示例.截图演示)让中大型vue项目,按需加载文件,让网页快速渲染! 官方文档:路与懒加载 所谓的路由懒加载: 代码示例 · 对比: 1. 没有优化的代码(截图1 · 省略) import Vu ...

  7. Eclipse中写jsp文件时,发现里面加载不了js文件和css文件(解决css文件在eclipse中显示不了)

    今天在做项目的时候,在项目中新建jsp文件和js文件和css文件,启动服务器,访问页面,加载不到js文件和css文件:(文件存在) jsp文件部分代码如下: <link rel="st ...

  8. [css] css的加载会阻塞js运行吗?为什么?

    [css] css的加载会阻塞js运行吗?为什么? 会阻塞js的执行,因为js可能会去获取或改变元素的样式,所以浏览为了不重复渲染, 等所有的css加载渲染完成后在执行js 个人简介 我是歌谣,欢迎和 ...

  9. 阻止html页面加载,如何防止页面加载重复的JS?

    我自己写了一个页面,除了公共部分的页头页脚以外,其余内容都是通过Ajax加载过来的,现在遇到了比较头疼的问题: 先说一下我加载的方式 $.ajax({ type : "GET", ...

最新文章

  1. 破解人工智能系统的四种攻击方法!
  2. 湖南对口升学计算机组装考点,全国计算机等级考试湖南省考点名单及联系方式...
  3. LightOJ1032 Fast Bit Calculations(数位DP)
  4. 2018年区块链技术发展总结与展望(附报告全文) | 起风研究院
  5. 编程学习笔记(第一篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(1)...
  6. mysql 错误 0152_SP2-1503 SP2-0152 错误解决
  7. 多重 for 循环,如何提高效率?
  8. 盘点 Greenplum 数据库的十大特点
  9. 美团面试:如何设计一个注册中心?
  10. SCSM 2012 SP1创建SCOM连接器
  11. jvm对象从新生代到老年代_JVM内存管理、JVM垃圾回收机制、新生代、老年代以及永久代...
  12. 基于Android的办公自动化系统APP设计与实现
  13. 汉字 计算机 坟墓,让汉字跨越数字化鸿沟
  14. FastReport for Delphi
  15. 推荐一个Web前端程序员必须要吃透的书籍!
  16. [Hadoop性能调优]
  17. 前端算法js:跳格子游戏
  18. android英语,Android 每日一句(英语)
  19. 前端面试技巧和注意事项_web前端没有项目经验怎么应对面试?(技巧) -
  20. 不管是游戏还是动画都得靠它!你都知道吗?3DMAX角色建模教程—鼹鼠

热门文章

  1. gdb 查找动态库方法
  2. 不要千言万语,一组漫画让你秒懂最终一致性
  3. Linux下nginx支持.htaccess文件实现伪静态的方法!
  4. Gin源码解析和例子——路由
  5. 【Qt】通过QtCreator源码学习Qt(五):QLoggingCategory管理、分类、过滤打印信息
  6. 【Ubuntu】ubuntu工具 记录shell终端的内容到文件中:script
  7. html表单颜色选择器,如何在Django管理中使用HTML5颜色选择器
  8. 《深入理解Java虚拟机》(第二版)学习1:JVM的内存划分
  9. Java项目:旅游网站管理系统设计和实现(java+springboot+jsp+mysql+spring)
  10. mysql四维数组_MySQL如何实现数组功能