`
ningxiaotao
  • 浏览: 42647 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

客户端存储与JavaScript性能优化

阅读更多

客户端存储:

 

  • Cookie
缺点:
每个 cookies的大小不能超过4096字节
一般至多允许每个网站使用20个
一些浏览器要求所有网站总共的cookie数不能超过300个
不能跨浏览器
每次请求都会把数据发送到服务器端
        
优点:
浏览器支持最全面
和服务器交互方便

  • Flash Share Object
优点:
Key-Value存储方式
默认提供了100k,可向用户申请更大的空间
浏览器支持情况良好
跨浏览器
缺点:
要求浏览器安装Flash插件
Flash Player 6+
必须在页面中加载一个flash,而且得保证flash可以正常工作

  • User Data
特点:
单个页面提供128K 每个domain提供1024K
IE5.5+浏览器支持
不能跨浏览器
只能在相同路径下的不同页面间共享
  • Dom Storage
三种形式
sessionStorage 、localStorage和globalStorage
globalStorage是与localStorage类似的早期实现
sessionStorage 会话结束时就会销毁
localStorage是持久化存储
sessionStorage和localStorage总共提供了10M的存储空间

  • Window.name
Window原生对象的一个属性,所有浏览器都支持
提供了2MB~~60MB的空间
只有在链接跳转时才能传递数据
可以跨页面,跨域
可以在页面的domready事件之前使用
不能够持久化

  • Silverlight
提供了一个IsolatedStorageFile独立存储的API
默认为每个应用提供了1M的空间
跨浏览器
需要安装Silverlight插件
silverlight现在的安装率已经达到了60%

  • Google Gears
基于SQLite
默认为每个应用提供了1M的空间,可向用户申请更大的空间
需要安装GoogleGears插件
支持全文检索
Google不再打算支持此技术了

  • Open Database
HTML 5 正宗的存储方案
每个域名提供5MB的存储空间
SQL 语言的支持
事务支持

  • Application Cache


下面是各种方式的有缺点对比已经浏览器支持情况

JavaScript性能优化:

 

 

  • JavaScript 更多的时候是和 DOM 、 BOM 在协同工作
  • 更多的时候是 CSS 和 DOM 让 javascript 变慢

 

  • HTMLCollection
 Collections in the HTML DOM are assumed to be live meaning that they are automatically updated when the underlying document is changed.

因此对于我们有用的优化方法

  • 尽量减少对元素属性的访问 -- 把经常要访问的属性存储在本地变量中
  • 如果要访问一组元素可以将它们存储在一个数组对象当中

 

  • Reflow & Repaint
  • Reflow ( 回流 ) 是导致 DOM 脚本执行低效的一个关键因素。页面上任何一个结点触发 reflow ,都会导致它的子结点及祖先结点重新渲染
  • Repaint( 重绘 ) 是在一个元素的外观被改变,但没有改变布局的情况下发生,如改变 visibility 、 outline 、前景色
  什么时候发生 Reflow & Repaint

  • 添加,删除,更新 DOM 节点
  • 通过 display: none 用隐藏 DOM 节点(导致 reflow 和重绘)或者用 visibility: hidden (只导致重绘,因为位置不变)
  • 在页面移动 DOM 节点,或者使用动画
  • 添加样式表,调整 style 属性
  • 调整窗口大小,改变字体大小,还有滚动页面

因此对于我们有用的优化方法


  • Off-Document Operations
  • 批量改变样式
  • 修改不可见元素 -- 如果一个元素的 display 样式被设置为 none ,即使其内容变化也不再需要重绘 (Repaint) 此元素,因为根本就不会显示此元素。 注意尽量避免不必要的 reflow

 

 

  • 大小: 159.1 KB
分享到:
评论

相关推荐

    存储篇 2:本地存储——从 Cookie 到 Web Storage、IndexDB(1).md

    前端性能优化实践# 知识体系与小册格局 ## 写给读者 提起性能优化,大家现在脑海里第一时间会映射出什么内容呢? 可能是类似[“雅虎军规”](https://developer.yahoo.com/performance/rules.html?guccounter=1)和...

    存储篇 1:浏览器缓存机制介绍与缓存策略剖析(1).md

    前端性能优化实践# 知识体系与小册格局 ## 写给读者 提起性能优化,大家现在脑海里第一时间会映射出什么内容呢? 可能是类似[“雅虎军规”](https://developer.yahoo.com/performance/rules.html?guccounter=1)和...

    Java项目源码之家庭理财系统的实现(java+applet).zip

    性能优化: 缓存技术:利用缓存技术提高系统的性能,减轻服务器负载,提高响应速度。 异步处理:采用异步处理技术优化系统的并发能力,提高系统的吞吐量和稳定性。 家庭理财系统的实现旨在为用户提供方便、安全和...

    Redis全套学习笔记 (带章节目录) 完整版pdf

    本文是一篇关于Redis全套学习笔记的文章,主要介绍了Redis的基础知识、数据结构、持久化、集群、高可用、性能优化等方面的内容。通过本文的学习,读者可以全面掌握Redis的使用和应用,提高自己的技术水平和实践能力...

    barbellbuilder_client:Barbell Builder的客户端存储库

    它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 最小化构建,文件名包含哈希。 您的应用已准备好进行部署! 有关更多信息,请参见有关的部分。 npm run eject 注意:这是单向操作。 eject ,您将...

    基于Java的在线购物系统的设计与实现1.rar

    性能优化: 缓存技术:利用缓存技术如Redis等来提升系统性能,减轻数据库负载。 异步处理:采用消息队列等技术实现异步处理,提高系统的并发处理能力和响应速度。 通过以上设计与实现,基于Java的在线购物系统能够...

    深入云计算 MongoDB管理与开发实战详解pdf.part2

    《深入云计算(MongoDB管理与开发实战详解)》系统全面的介绍了MongoDB开发、管理、维护和性能优化等方方面面。详细而深入,对MongoDB的开发和管理方法进行了详细的讲解,也对MongoDB的工作机制进行了深入的探讨。注重...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    6.9 页面状态性能优化策略 238 6.9.1 存储位置优化——把视图状态信息保存在服务端而非客户端 238 6.9.2 体积优化——压缩视图状态数据 240 6.9.3 分块存储视图状态数据 243 6.10 视图状态和控件状态的总结 243 ...

    mern-google-oauth-front:教程中的前端客户端存储库,用于将Google OAuth系统实现到MERN堆栈,该课程位于

    它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 npm run eject 注意:这是单向操作。 ...

    lux:几乎无需代码即可构建可扩展的,由Node.js支持的REST JSON API

    Lux by 是一个MVC样式的框架,用于构建高性能,大规模JSON API, , 和启发了所有了解JavaScript语言及其...与客户端JavaScript应用程序完美匹配 :wine_glass: 容易贡献 路线是通过Map而非Array存储和访问的 拥抱ES20

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    6.9 页面状态性能优化策略 238 6.9.1 存储位置优化——把视图状态信息保存在服务端而非客户端 238 6.9.2 体积优化——压缩视图状态数据 240 6.9.3 分块存储视图状态数据 243 6.10 视图状态和控件状态的总结 243 ...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    6.9 页面状态性能优化策略 238 6.9.1 存储位置优化——把视图状态信息保存在服务端而非客户端 238 6.9.2 体积优化——压缩视图状态数据 240 6.9.3 分块存储视图状态数据 243 6.10 视图状态和控件状态的总结 243 ...

    prohits-viz-client:Prohits-viz客户端代码存储库

    ProHits-viz Web应用程序,用于可视化屏幕和... 它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    《深入云计算(MongoDB管理与开发实战详解)》系统全面的介绍了MongoDB开发、管理、维护和性能优化等方方面面。详细而深入,对MongoDB的开发和管理方法进行了详细的讲解,也对MongoDB的工作机制进行了深入的探讨。注重...

    庖丁解牛纵向切入ASP.NET 3.5控件和组件开发技术.pdf

    6.9 页面状态性能优化策略238 6.9.1 存储位置优化——把视图状态信息保存在服务端而非客户端238 6.9.2 体积优化——压缩视图状态数据240 6.9.3 分块存储视图状态数据243 6.10 视图状态和控件状态的总结243 6.11...

    以太坊IPFS-DStorage:分散存储以太坊IPFS

    分散存储以太坊+ IPFS 该项目是通过。 产品特点 带钩的React-Redux Ethers.js客户端库 ... 它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 最小化构建,文件名包含哈希。 您的应用已准

    divolte-collector:分压集电器

    与许多其他Web跟踪解决方案类似,它在客户端使用JavaScript标记来收集用户交互数据。 Divolte Collector可用作构建从基本Web分析仪表板到实时推荐引擎或横幅优化系统的所有内容的基础。在线文档和下载您可以在我们...

    asp.net知识库

    优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 根据基本表结构及其数据生成 INSERT ... 的 SQL 简便的MS SQL 数据库 表内容 脚本 生成器 将表数据生成SQL脚本的...

    ASP.NET Night Words

    第21章 asp.net网站的性能优化 407 21.1 程序编码优化 407 21.1.1 集合操作 407 21.1.2 字符串连接优化 410 21.1.3 类型转换优化 413 21.1.4 使用server.transfer()方法 414 21.1.5 避免不必要的服务器往返 ...

    精通AngularJS part1

    112性能优化——设置期望值、测量、调节、并重复301 113AngularJS应用的性能优化303 优化CPU使用率303 加速$digest循环303 尽可能少进入$digest循环310 限制每个$digest循环的执行轮数312 优化内存占用312 尽...

Global site tag (gtag.js) - Google Analytics