热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

让webapp更快的HTML5最佳实践-

Tip1:使用webstorage代替cookiecookie最大的缺陷是在每一次HTTP请求中都会携带所有符合规则的cookie数据.这会增加请求响应时间,特别是XHR请求.在HTML5中使用sessionStorage和localStorage代替cookie是更好的做法.这另种方法可以将数据永久或者以sessi

 简介

  本文重点关注如何充分利用HTML5和CSS让web app运行更加流畅.

 Tip 1: 使用web storage代替COOKIE

  COOKIE最大的缺陷是在每一次HTTP请求中都会携带所有符合规则的COOKIE数据.这会增加请求响应时间,特别是XHR请求. 在HTML5中使用sessionStorage和localStorage代替COOKIE是更好的做法.

  这另种方法可以将数据永久或者以session时间存储在用户本地.数据不会随着HTTP请求传递.所以我们优先使用web storage,仅仅使用COOKIE作为替代方案.

// if localStorage is present, use that
if (('localStorage' in window) && window.localStorage !== null) {

  // easy object property API
  localStorage.wishlist = '["unicorn", "Narwhal", "deathbear"]';

} else {

  // without sessionStorage we'll have to use a far-future COOKIE
  // with document.COOKIE's awkward API
  var date = new Date();
  date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000));
  var expires = date.toGMTString();
  var COOKIEstr = 'wishlist=["unicorn", "Narwhal", "deathbear"];' +
                  ' expires=' + expires + '; path=/';
  document.COOKIE = COOKIEstr;
}

 Tip 2: 使用CSS Transition代替Javascript动画

  CSS Transition能带来更高的性能,更少的代码,更容易维护和理解.

 Tip 3: 使用客户端数据库代替服务器请求

  Web SQL Database和IndexedDB让浏览器有了数据库存储能力.很多应用场景可以迁移到客户端数据库以减少服务器的请求次数.

  localStorage和sessionStorage在简单数据存储时比客户端数据库更快,可以用来实现一些简单的状态,进度保存.

  当一个组件需要管理上百条数据(如好友列表),同时支持用户搜索, 过滤, 排序时, 客户端数据库存储一份数据可以有效减少HTTP请求次数. 查看Web SQL Database tutorial获取详细指导.

 Tip 4: 使用Javascript原生API

  随着更高版本Javascript的普及, 像Array prototype新增了很多API都可以在大多数浏览器中直接使用.例如:

// give me a new array of all values multiplied by 10
[5, 6, 7, 8, 900].map(function (value) {
  return value * 10;
});
// [50, 60, 70, 80, 9000]

// create links to specs and drop them into #links.
var linksList = document.querySelector('#links');
var links = [];
['html5', 'css3', 'webgl'].forEach(function (value) {

  links.push(value.link('http://google.com/search?btnI=1&q=' + value + ' spec'));
});
linksList.innerHTML = links.join('');

// return a new array of all mathematical constants under 2
[3.14, 2.718, 1.618].filter(function (number) {
  return number <2;
});

// you can also use these extras on other collections link nodeLists
[].forEach.call(document.querySelectorAll(&#39;section[data-bucket]&#39;),
  function (elem, i) {
    localStorage[&#39;bucket&#39; + i] = elem.getAttribute(&#39;data-bucket&#39;);
});

  通常情况下这些原生方法比手动编写循环要快:

for (var i = 0, len = arr.length; i 

  使用原生JSON.parse()比json2.js更加高效,安全.

  原生的String.prototype.trim也是一个很好的例子, 这些功能不是HTML5中的,也应该得到广泛的应用.

 Tip 5: 不仅仅为离线app使用cache manifest,在线网站网站也可以适当使用

  后台管理系统这样的站点使用缓存可以极大提高性能.

  cache manifest比设置Expires有一些优势:明确地声明需要缓存的文件,浏览器可以进行优化,可能在你使用之前就已经提前下载到本地了.

  可以将页面基本结构看做模板, 显示的内容随着数据变化, 将可模板化的HTML结构通过cache.manifest进行缓存, 从服务器端获取JSON数据之后更新内容.

  查看application cache tutorial获取详细指导.

 Tip 6: enable硬件加速来增强视觉体验

  某些浏览器可能使用GPU加速让高速动画更加平滑.Firefox Minefield, IE9, Safari已经宣称实现了硬件加速. Chromium也增加了window平台的3D transform加速.各个浏览器对硬件加速的支持肯定会越来越好.

  在支持并启动了硬件加速的情况下, 动画, rotation, scaling, opacity肯定会更加平滑. 所有实际操作都发生在GPU而不需要内容的重绘. 然而需要注意的是,任何影响页面布局的操作都会降低速度.

 Tip 7: 使用web worker执行需要大量CPU资源的操作

  web worker有两个好处: 1) 快速 2) 不阻塞浏览器响应. 点击web worker slide查看更多信息.

  web worker的一些可能的使用场景:

  • 长文本格式化


  • 语法高亮


  • 图片处理


  • 图片合成


  • 大数组处理

 Tip 8: HTML5 表单属性和input类型

  HTML5增加了一系列input type,包括search, tel, url, email, datetime, date, month, week, time, number, range, color等. 在支持这些功能的浏览器中使用原生功能, js插件作为补充.

  像placeholder, required, pattern都能极大提高页面的可用性,和性能.

   点击HTML5 form 资料查看更多信息.

 Tip 9: 使用CSS3减少图片的使用

  减少图片能减少HTTP请求,同时减少页面大小,更容易维护,常用的属性如下:

  • linear and radial gradients


  • border-radius


  • box-shadow


  • rgba


  • transform


  • css mask

  常见的使用场景有: polished buttons via gradients, replicate many other effects

 Tip 10: 使用WebSocket代替XHR提供更快交互和更少的带宽

  WebSockets是为了Comet而设计的. 使用它实现Comet比XHR确实带来更多的好处.

  原文链接: http://www.html5rocks.com/en/tutorials/speed/quick/

以上就是让web app更快的HTML5最佳实践的详细内容,更多请关注 第一PHP社区 其它相关文章!


推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。使用Gson解析json成对象时,默认将json里对应字段的值解析到java对象里对应字段的属性里面。然而,当我们自己定义的java对象里的属性名与json里的字段名不一样时,我们可以使用@SerializedName注解来将对象里的属性跟json里字段对应值匹配起来。本文介绍了使用@SerializedName注解解析json数据的方法,并给出了具体的使用示例。 ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • ECMA262规定typeof操作符的返回值和instanceof的使用方法
    本文介绍了ECMA262规定的typeof操作符对不同类型的变量的返回值,以及instanceof操作符的使用方法。同时还提到了在不同浏览器中对正则表达式应用typeof操作符的返回值的差异。 ... [详细]
  • express工程中的json调用方法
    本文介绍了在express工程中如何调用json数据,包括建立app.js文件、创建数据接口以及获取全部数据和typeid为1的数据的方法。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
  • css元素可拖动,如何使用CSS禁止元素拖拽?
    一、用户行为三剑客以下3个CSS属性:user-select属性可以设置是否允许用户选择页面中的图文内容;user-modify属性可以设置是否允许输入 ... [详细]
  • JavaWeb介绍概念JavaWeb,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有javaapplet,不过使 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • css,背景,位置,y,background, ... [详细]
author-avatar
Q457423356
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有