写点什么

傲游勾三股四解析 HTML5 中的 Web Storage 使用

  • 2012-06-18
  • 本文字数:1830 字

    阅读完需:约 6 分钟

在 6 月 14 日,由天翼空间·开发者工厂主办,InfoQ 协助策划的第九期专家讲坛活动上,来自傲游浏览器前端开发经理赵锦江( @勾三股四)向大家分享了在网页数据存储、Web Storage 概念及实战中的开发技巧等内容。

HTML5 中的 Web Storage讲稿下载

早期的网页数据存储只能依赖于 cookies,但它存在着容量有限且很小,不便于复杂数据的管理等问题,此外,还需将 cookies 附带在每一次网络请求之中。HTML5 的出现,极大地增加了开发人员的开发灵活度:

  • Web Storage(Key-value 相对简单易用)
  • Web SQL Database(用 SQL 访问本地数据库)
  • Indexed DB(存取 JSON 数据的数据库)
  • File system(存取文件)
  • Application Cache(缓存网络资源)

Web Storage 由两部分组成,sessionStorage 和 localStorage,sessionStorage 用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此 sessionStorage 不是一种持久化的本地存储,仅仅是会话级别的存储;localStorage 用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。其他特性还包括:

  • localStorage
    • 以域名为单位进行数据划分
    • 同域下的所有页面一起共享这些数据
    • 对数据的改动会导致同时共享这些数据的其他页面触发 storage 事件
  • sessionStorage
    • 以每个“顶级页面(top-level browsing context)”为单位
    • 在所有同域的“子页面”中共享这些数据(对数据的改动会触发 storage 事件)
    • 为所有同域的以下“顶级页面”拷贝这些数据(通过超链接新打开的页面、通过脚本新打开的页面)

接下来赵锦江分别从基本操作、高级操作和简化操作等三个方面介绍了以上两种存储方式的使用。同时还介绍了 storage 事件的触发和常用事件对象。在最后的实战部分,分别结合 JSON API、String.spilit 和 Array.join 这三种方式进行了讲解。

在问答环节,赵锦江回答了网友的提问,详细信息如下:

问:HTML 的 Web Storage 技术较之前存储技术有什么改进和优势呢?
答:和传统的 Cookies 相比,Web Storage 是专为本地存储而设计的,有更友好的接口设计和更大的存储空间,也不会伴随每次 HTTP 请求到服务器。

问:Webkit 中离线存储是如何实现的?
答:不同的浏览器内部实现起来确实是不同的,但实现结果对于 Web 开发者而言是相同的,没有什么特别之处——这也是标准的意义所在。

问:HTML5 相对本地应用来说效率不是很高吧? 它用的多是不是适用性广的原因?
答:HTML5 最主要的特性有两个:一个是快速实现,一个是跨平台。效率方面,随着技术的不断进步,相信和传统应用的差距会逐步缩短。

问:数据存储于本地缓存中吗?也就是说我们无法将较为大量的数据放在 Web Storage 里边了?
答:localStorage 会把数据存在硬盘上,即使重启电脑之后依然存在。

问:存储在本地的数据未加密而且永远不会过期,极易造成隐私泄漏。老师一般这个问题是怎样解决的呢?
答:这样设计 localStorage 其实是把数据的控制权交给了程序开发者。这样灵活度更高,如果希望页面关掉就清除数据,建议使用 sessionStorage

问:请问老师,在浏览器下 Session 数据怎样实现跨域访问?
答:理论上是无法跨域的,这也是出于对数据保护方面的考虑。但基于这些理论的设计,还是有一些技巧,可以做到类似“跨域”的效果。这里不一一列举。

问:请问老师 Web Storage 有什么优势呢?我在做存储的时候为什么要选择 Web Storage 而不适用 Cookie 呢?
答:不同的浏览器内部实现起来确实是不同的,但实现结果对于 Web 开发者而言是相同的,没有什么特别之处——这也是标准的意义所在。

问:Storage 有哪些浏览器不支持呢?或者说现在支持的有哪些浏览器呢?
答:给你推荐一个网址: http://caniuse.com/#feat=namevalue-storage 都在这里了。

关于讲师

赵锦江,网名勾三股四,毕业于西北工业大学,2007 年加入傲游浏览器并工作至今,现任前端开发部经理。

关于专家讲坛

天翼空间开发者社区专家讲坛是天翼空间开发者社区( www.189works.com )2012 年针对开发者推出的一项提升专业能力的系列讲座,每周四晚,邀请移动互联网开发领域的权威专家,通过语音频道专题讲座,线上论坛访谈,以及微博、QQ 群线上同步直播的形式,为社区的开发者用户提供系统的技术讲座,答疑,以及运营知识方面的培训。

往期内容回顾

关于专家讲坛更多详情,请浏览官方网站。InfoQ 也会对后续的活动进行跟踪报道。

关于社区活动的更多详情,欢迎查看InfoQ 维护的社区活动日历,也欢迎关注InfoQ 官网微博( @InfoQ ),获取实时的活动信息!

2012-06-18 03:073212
用户头像

发布了 156 篇内容, 共 55.0 次阅读, 收获喜欢 7 次。

关注

评论

发布
暂无评论
发现更多内容

Golang 终极备忘录

俞凡

golang

望来路,启新程:皮阿诺2024卓越时刻

新消费日报

拿捏!高效掌握离线数据,让数据资产快速释放价值

赛博威科技

离线数据 赛博威

GitHub 上排名前 11 的开源管理后台(Admin Dashboard)项目

NocoBase

GitHub 开源 低代码 无代码 dashboard

【GreatSQL优化器-08】statistics和index dives

GreatSQL

阿里巴巴1688 API接口深度探索:商品详情获取与按图搜索商品(拍立淘)实战指南

代码忍者

1688API接口 关键词搜索1688API

数据要素市场前景为何广阔?

郑州埃文科技

数据要素

景德镇等保测评企业有哪些?正规机构?

行云管家

等保 等级保护

京东供应链创新与实践:应用数据驱动的库存选品和调拨算法提升履约效率

京东零售技术

供应链

自学记录HarmonyOS Next Image API 13:图像处理与传输的开发实践

李游Leo

鸿蒙 HarmonyOS HarmonyOS NEXT

当AI遇见大数据:决策优化的下一个风口

天津汇柏科技有限公司

大数据 AI 人工智能

我从 2024 年的 LLM 应用开发实践中学到了什么?Part 1

Baihai IDP

程序员 AI LLM Baihai IDP GenAI

MySQL遇到瓶颈怎么办?GaiaDB 支撑「账三丰·代账业务」服务数万家企业

Baidu AICLOUD

数据库 :MySQL 数据库

数据要素在金融领域如何应用?

郑州埃文科技

智慧城市 数据要素

网络世界的守护者-等保测评你知道吗?

行云管家

网络安全 等保 等级保护 等保测评

去哪儿机票智能预警系统-雷达系统落地实践

Qunar技术沙龙

技术 互联网 后端 雷达

部署基于LLM的私有知识库系统AnythingLLM

轶天下事

在华为云X实例上安装部署企业Wiki知识分享平台的实践

轶天下事

华为云Flexus X实例下的场景体验——小企业使用Python语言——超迅速搭建简单公网API接口服务

轶天下事

Web3项目的上线流程

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

管报经分,助力企业构筑管理大脑

用友智能财务

财务 会计 政策解读

全方位破解终端运营管理的“最后一公里”难题

赛博威科技

终端 精细化运营 快消行业 赛博威

官宣!雀巢携手赛博威,共同引领行业数字营销新变革!

赛博威科技

数字营销 赛博威

华为云Flexus X轻松实现Redis一主多从高效部署

轶天下事

在线CAD绘制墙体(WEB CAD开发室内设计软件)

WEB CAD SDK

华为云服务器Flexus X搭建BTC虚拟币质押投资理财系统(仅测试学习)

轶天下事

京东API接口深度探索:如何使用关键词搜索商品及代码示例详解

代码忍者

京东API接口 京东评论API接口

什么是 单点登录SSO?SSO工作原理

运维有小邓

SSO 密码管理 密码管理软件 多因素身份验证

华为云Flexus X服务器推荐公司、企事业单位及生产环境使用,特别注重安全和稳定性

轶天下事

华为 Mate 60 系列发布:从软件测试视角看科技创新的背后

测试人

软件测试

隔断设计这样做,瞬间提升家居颜值!跟着皮阿诺抄作业就对了

新消费日报

傲游勾三股四解析HTML5中的Web Storage使用_JavaScript_贾国清_InfoQ精选文章