页面相关的数据存储(缓存及Web Storage)
页面可用的缓存包括: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)相关推荐
- [中秋特别定制版本]绝美登录页面搭配[登录数据存储到服务器](服务器宝塔数据库开通+短信服务开通+后端redis验证码缓存)
hello,大家好,这里是又鸽了好几个星期不出文章的x,最新在准备答辩所以又停更了
- HTML5 本地存储 Web Storage
Web Storage Web Storage 是一项非常重要,并且很实用的技术,已经被大多数浏览器(包括IE8)所支持, 在HTML4时代, 虽然cookie无处不在,但cookie仍然有自己的硬伤 ...
- 2020 Java面试题最新(九数据存储篇)
对于数据存储,数据库问题也有很多,列出一些大厂数据库的规范,以及一些面试官可能问到的问题 1.大厂MySQL规范 基础规范 表存储引擎必须使用 InnoDB 表字符集默认使用 utf8,必要时候使用 ...
- HTML5 Web存储(Web Storage)技术以及用法
使用HTML5可以在本地存储用户的浏览数据.早些时候,本地存储使用的是 cookie.但是Web 存储需要更加的安全与快速,这些数据不会被保存在服务器上,但是这些数据只用于用户请求网站数据上.它也可以 ...
- 一文读懂十大数据存储加密技术
数据作为新的生产要素,其蕴含的价值日益凸显,而安全问题却愈发突出.密码技术,是实现数据安全最经济.最有效.最可靠的手段,对数据进行加密,并结合有效的密钥保护手段,可在开放环境中实现对数据的强访问控制, ...
- Web Storage API的介绍和使用
文章目录 简介 浏览器的本地存储技术 Web Storage相关接口 浏览器兼容性 隐身模式 使用Web Storage API 总结 简介 Web Storage为浏览器提供了方便的key valu ...
- 使用 jQuery Mobile 与 HTML5 开发 Web App (十六) —— HTML5 Web Storage
绝大多数的软件都需要使用某种具有持久性的方式来存储数据,Web Apps 也不例外,涉及到完整后台的 Web Apps ,可以直接在后台使用 mysql 等数据库来存储数据,但过多的 sql 查询会影 ...
- 数据存储-前端缓存技术
1.客户端存储 这是一个通用术语,包含几个独立但相关的 API: Web Storage.Web SQL Database.Indexed Database 和 File Access.每种技术都提供 ...
- Web 数据存储总结
随着Web应用程序的出现,也产生了对于能够在客户端上存储用户信息能力的要求.这个问题的第一个解决方案是以cookie形似出现的.网景公司在一份名为"Persistent Client Sta ...
最新文章
- Python3访问纯真IP数据库的代码
- 计算机网络基础_4_传输层与应用层的作用
- java 连接池连接mysql数据库需要哪些jar包_DBCP-基于Java8导入DBCP连接池所需JAR包并编写DBCPUtils工具类...
- apt-get、apt、yum、dpkg、rpm
- .NET Core 3 Preview 2 发布,C# 8 更强大的模式匹配
- mysql执行计划explain介绍_Mysql执行计划EXPLAIN详解
- 刚发布!开发者调查报告:机器学习/深度学习算法工程师急缺
- Ps 初学者教程,如何向风景图中添加元素?
- HTTPS客户端验证服务器端的过程
- print_r与var_dump
- IAR教程之IAR下载和调试
- 【SELinux】vendor_file_contexts没有被编译到vendor/etc/selinux/路径下
- Android Manager之AudioManager(音频管理器)
- ubuntu安装配置NFS
- FPGA_UART串口通信
- Android开发中Post方式上传文件(头像之类的)
- 特种浓缩分离:全自动型拉板式压滤机
- GODADDY上买域名心得
- 如何同时登陆2个微信
- Guitar Pro8.0吉他打谱作曲中文版有哪些新功能?
热门文章
- #Sora#peewee query 笔记
- wamp无法启动Apache Apache服务启动失败解决方法
- 改变Eclipse提示框的墨色背景
- Chromium源码目录结构简介
- 人工智能开启数字化新征程,智能语音全速向前
- python 中list+=[1]与list =list+[1]
- 脱贫摘帽攻关年,“拼多多们”扎进三农
- 在 SCA Module 中使用 Hibernate 框架实现数据持久层
- 亲测无限坐席在线客服系统源码,基于ThinkPHP的一款在线客服系统源码
- 算力≠智慧! MIT教授抛出「意识来源」新理论:人类认知与计算根本没关系