AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

傲游勾三股四解析 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:073145
用户头像

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

关注

评论

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

超级人工智能、具身智能与大世界模型:AI的未来之路

测试人

人工智能

ERP 价值化国产替代白皮书正式发布!

用友BIP

AI 数智化 用友BIP ERP价值化国产替代

获取字节火山DeepSeek系列 API完整教程及超多实用玩法!

火山引擎开发者社区

DistilQwen2.5-R1发布:知识蒸馏助推小模型深度思考

阿里云大数据AI技术

人工智能 知识蒸馏 模型推理 PAI DistilQwen2.5

Rust 与 FFmpeg 实现视频水印添加:技术解析与应用实践

Yeauty

rust ffmpeg Video media audio

用友BIP供应网络计划发布,驱动10000+节点的全球一张网智能运营

用友BIP

AI 数智化 用友BIP 数智采购 供应网络计划

依赖腾讯云的音视频服务能力,构建一个高可用的在线直播平台

为自己带盐

腾讯云 直播

火山引擎云上实战:QwQ-32B 大模型快速部署

火山引擎开发者社区

2025 全球人形机器人赛道大事件解读和发展趋势分析!!

机器人头条

科技 大模型 人形机器人 具身智能

新闻速递丨数字化再升级:Altair One 云端门户与 NVIDIA Omniverse 实时数字孪生蓝图完成全面整合

Altair RapidMiner

AI HPC 数字孪生 仿真 AltairOne

第八届中国国际管道会议(CIPC)现已开启观众登记通道

江湖老铁

扫码联网系统(源码+文档+讲解+演示)

深圳亥时科技

数据驱动进化:AI Agent如何重构手机交互范式?

数据堂

人工智能 数据采集 数据集 大模型 AI Agent

给Web开发者的HarmonyOS指南01-文本样式

苏杰豪

鸿蒙 前端 HarmonyOS NEXT

DeepSeek 3FS 架构分析和思考(上篇)

火山引擎开发者社区

什么是最小权限原则?

运维有小邓

最小权限管理 零信任模型 AD域管理

原生APP和混合APP的开发方式

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

软件外包公司 APP外包公司 APP开发公司

AI+低代码:企业数字化转型的双引擎

万界星空科技

AI 低代码 低代码平台 mes 万界星空科技低代码平台

理解文字识别:一文读懂OCR商业化产品的算法逻辑

合合技术团队

人工智能 算法 文字识别 OCR #大数据

利用FinClip优化小程序支付链路的事件分析

xuyinyin

原生APP和混合APP的开发成本

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

软件外包公司 APP外包 APP开发公司

和鲸科技医疗智能体上线联想擎天平台:赋能医疗服务效率与质量

ModelWhale

专家管理系统(源码+文档+讲解+演示)

深圳亥时科技

2025南京软件产业博览会(南京软博会)

AIOTE智博会

软件展 软博会 南京软博会

给Web开发者的HarmonyOS指南02-布局样式

苏杰豪

鸿蒙 前端

原生APP和混合APP在性能方面的比较

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

APP开发 软件外包公司 APP外包

中油燃气集团与用友战略签约,深入企业AI合作,打造行业智能化标杆

用友BIP

数智化 用友BIP 企业AI

替代 Airtable / 飞书表格?用零代码构建多对多关系的任务管理系统

NocoBase

开源 低代码 零代码 表格 任务管理系统

HAHM全球营销新范式:安全、创新与合作共赢的数字化未来!从纽约到全球84国,揭秘哈姆如何重构营销生态与财富机遇

web3区块链创业团队DappNetWork

智能制造:物联网和自动化之间的关系

积木链小链

数字化 智能制造 工业自动化

手把手教你用Java爬虫抓取淘宝商品信息(附完整代码)

代码忍者

淘宝API接口

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