页面可用的缓存包括:Http Cache, Local Storage, Session Storage以及Application Cache. 它们都可以用来减少请求数量,以提高页面的性能及减少流量消耗,这对于移动端的浏览器来说更为重要 (另外还有Memory Cache, 不过对于前端工程而言是透明的)。


Http Cache

最为常用的缓存机制。相对后三项属于浏览器内核内的模块(也是H5中定义的标准),Http Cache早已存在于HTTP模块中了。它是网络层对HTTP协议实现中一部分。它基于对响应头中的Cache Conrol信息进行解析,执行新鲜度检查、条件更新等操作来管理缓存。缓存的容量限制及淘汰、更新算法在各个浏览器中实现都不相同,属于浏览器及页面开发优化的一个重点。比如缓存赵多的内容会使得网页请求的数量更少,但是缓存的内容达到一定量后,会导致查询及I/O变慢,反而使得投入产出比下降。容量是基于存储空间而定,不同的浏览器会有不同的最大值,而且不同的用户在实际使用是对缓存总量的依赖也不同。这些都是浏览器性能优化时考虑的内容。

详细内容可以通过<<管好页面缓存>>了解。

它的一个问题在于缓存内容的淘汰基于算法的实现,无法保证单独针对需要保留某个资源。所有的资源都可能因为缓存策略的变化,存储空间的变化而遭到淘汰。所以针对这种场景,HTML5定义了能更好地支持离线浏览的Applcation Cache。


Application Cache

应用于离线场景下可以让用户继续使用页面的场景,比如支持离线的游戏、及Office编辑应用等。 没有明确的容量限制,WebKit系列的浏览器会有每个域名5MBytes的限制(默认而已,具体会有变化)。考虑到一些浏览器存储时使用UTF-16编码,并不能真正达5MBytes。

Application Cache是一种基于请求的主动缓存,缓存的内容受Cache Control信息控制,包括相关的新鲜度检测等。

实际应用时, Application Cache比较容易出问题, 典型的有,如何更改manifest文件以达到资源更新的目的,以及可能会造成重复缓存(manifest解析的时机不同)。 在决定使用Application Cache,一定要好好读读这篇文章:<<Application Cache is a Douchebag>>。

Application Cache提供的API非常简单,它并不依赖于JS就可以实现缓存的目的,同是又可以通过API来获得缓存的状态。详细内容参考H5规范中的定义<<Offline Web Applications>>。

Local Storage & Session Storage

使用方式和Cookie相似,主要应对Cookie不适合存储较大数据的情况,否则会导致与服务器交互的数据变大,性能易受到影响。。相对于Applcation Cache, 它们的使用依赖于JS, 但是简单明确。

Local Storage及Session Storage在H5称为Web Storage, 使用相同的API, 只是两者存在周期不同。前者可以一直存储,没有时间限制。后者则只存在于一个会话期,用户关闭浏览器后就会清除(除非浏览器支持重启后恢复上次的会话)。

在存储的API中,有不同的调用方式, 其性能是有差异的,并且不同的浏览器表现迥异:

可能的原因是相对大家都关注的JS Engine执行性能问题的逐步改善,DOM的操作时间对性能的影响更大。下面的数据来自IE团队针对使用较多AJAX请求的页面的统计:

Web Storage的最大问题在于存储的同步问题,好在有一些JS库可以帮助改善这个问题。详细的内容可以阅读<<HTML5 and JavaScript Web Apps>>第6章Optimizing with Web Storage.

转载请注明出处: http://blog.csdn.net/horkychen

页面相关的数据存储(缓存及Web Storage)相关推荐

  1. [中秋特别定制版本]绝美登录页面搭配[登录数据存储到服务器](服务器宝塔数据库开通+短信服务开通+后端redis验证码缓存)

    hello,大家好,这里是又鸽了好几个星期不出文章的x,最新在准备答辩所以又停更了

  2. HTML5 本地存储 Web Storage

    Web Storage Web Storage 是一项非常重要,并且很实用的技术,已经被大多数浏览器(包括IE8)所支持, 在HTML4时代, 虽然cookie无处不在,但cookie仍然有自己的硬伤 ...

  3. 2020 Java面试题最新(九数据存储篇)

    对于数据存储,数据库问题也有很多,列出一些大厂数据库的规范,以及一些面试官可能问到的问题 1.大厂MySQL规范 基础规范 表存储引擎必须使用 InnoDB 表字符集默认使用 utf8,必要时候使用 ...

  4. HTML5 Web存储(Web Storage)技术以及用法

    使用HTML5可以在本地存储用户的浏览数据.早些时候,本地存储使用的是 cookie.但是Web 存储需要更加的安全与快速,这些数据不会被保存在服务器上,但是这些数据只用于用户请求网站数据上.它也可以 ...

  5. 一文读懂十大数据存储加密技术

    数据作为新的生产要素,其蕴含的价值日益凸显,而安全问题却愈发突出.密码技术,是实现数据安全最经济.最有效.最可靠的手段,对数据进行加密,并结合有效的密钥保护手段,可在开放环境中实现对数据的强访问控制, ...

  6. Web Storage API的介绍和使用

    文章目录 简介 浏览器的本地存储技术 Web Storage相关接口 浏览器兼容性 隐身模式 使用Web Storage API 总结 简介 Web Storage为浏览器提供了方便的key valu ...

  7. 使用 jQuery Mobile 与 HTML5 开发 Web App (十六) —— HTML5 Web Storage

    绝大多数的软件都需要使用某种具有持久性的方式来存储数据,Web Apps 也不例外,涉及到完整后台的 Web Apps ,可以直接在后台使用 mysql 等数据库来存储数据,但过多的 sql 查询会影 ...

  8. 数据存储-前端缓存技术

    1.客户端存储 这是一个通用术语,包含几个独立但相关的 API: Web Storage.Web SQL Database.Indexed Database 和 File Access.每种技术都提供 ...

  9. Web 数据存储总结

    随着Web应用程序的出现,也产生了对于能够在客户端上存储用户信息能力的要求.这个问题的第一个解决方案是以cookie形似出现的.网景公司在一份名为"Persistent Client Sta ...

最新文章

  1. Python3访问纯真IP数据库的代码
  2. 计算机网络基础_4_传输层与应用层的作用
  3. java 连接池连接mysql数据库需要哪些jar包_DBCP-基于Java8导入DBCP连接池所需JAR包并编写DBCPUtils工具类...
  4. apt-get、apt、yum、dpkg、rpm
  5. .NET Core 3 Preview 2 发布,C# 8 更强大的模式匹配
  6. mysql执行计划explain介绍_Mysql执行计划EXPLAIN详解
  7. 刚发布!开发者调查报告:机器学习/深度学习算法工程师急缺
  8. Ps 初学者教程,如何向风景图中添加元素?
  9. HTTPS客户端验证服务器端的过程
  10. print_r与var_dump
  11. IAR教程之IAR下载和调试
  12. 【SELinux】vendor_file_contexts没有被编译到vendor/etc/selinux/路径下
  13. Android Manager之AudioManager(音频管理器)
  14. ubuntu安装配置NFS
  15. FPGA_UART串口通信
  16. Android开发中Post方式上传文件(头像之类的)
  17. 特种浓缩分离:全自动型拉板式压滤机
  18. GODADDY上买域名心得
  19. 如何同时登陆2个微信
  20. Guitar Pro8.0吉他打谱作曲中文版有哪些新功能?

热门文章

  1. #Sora#peewee query 笔记
  2. wamp无法启动Apache Apache服务启动失败解决方法
  3. 改变Eclipse提示框的墨色背景
  4. Chromium源码目录结构简介
  5. 人工智能开启数字化新征程,智能语音全速向前
  6. python 中list+=[1]与list =list+[1]
  7. 脱贫摘帽攻关年,“拼多多们”扎进三农
  8. 在 SCA Module 中使用 Hibernate 框架实现数据持久层
  9. 亲测无限坐席在线客服系统源码,基于ThinkPHP的一款在线客服系统源码
  10. 算力≠智慧! MIT教授抛出「意识来源」新理论:人类认知与计算根本没关系