0

0

让web app更快的HTML5最佳实践

巴扎黑

巴扎黑

发布时间:2017-04-29 13:23:16

|

1683人浏览过

|

来源于php中文网

原创

 简介

  本文重点关注如何充分利用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('section[data-bucket]'),
  function (elem, i) {
    localStorage['bucket' + i] = elem.getAttribute('data-bucket');
});

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

for (var i = 0, len = arr.length; i < len; ++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/

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

2

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

25

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

8

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

622

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 5万人学习

Django 教程
Django 教程

共28课时 | 3.7万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号