第二十章 客户端存储

1、客户端存储有一下几种形式:Web存储、cookie、IE userData、离线Web应用、Web数据库、文件系统API。

2、Web存储标准所描述的API包含localStorage对象和sessionStorage对象。这两个对象实际上是持久化关联数组,是名值对的映射表。

3、cookie的API不方便使用,而且只适合存储少量文本数据。任何以cookie形式存储的数据,不论服务器端是否需要,每一次HTTP请求都会把这些数据传输到服务器端。

4、localStorage和sessionStorage两者的区别在于存储的有效期和作用域的不同:数据可以存储多长时间以及谁拥有数据的访问权。

5、localStorage存储的数据是永久性的,除非Web应用可以删除存储的数据,或者用户通过设置浏览器配置来删除,否则数据将一直保留在用户的电脑上,永不过期。sessionStorage存储的数据在窗口或者标签页被永久关闭时被删除。

6、localStorage的作用域限定在文档源级别,通过协议、主机名以及端口三者来确定的。同源的文档间共享相同的localStorage数据。localStorage的作用域也受浏览器供应商的限制。

7、sessionStorage的作用域也限定在文档源中,因此非同源文档间是无法共享sessionStorage的。不仅如此,它的作用域还被限定于窗口中。如果同源的文档渲染在不同的浏览器标签页中,那么它们互相之间拥有的是各自的sessionStorage数据,无法共享;一个标签页中的脚本是无法读取或者覆盖由另一个标签页脚本写入的数据,哪怕这两个标签页渲染的是同一个页面,运行的是同一个脚本也不行。

8、对象和数组类型的值通常是可变的,因此存储对象要求存储它们的副本,以确保之后任何对这类对象的改变都不影响到存储的对象。

9、如果浏览器有两个标签页都打开了来自同源的页面,其中一个页面在localStorage上存储了数据,那么另外一个标签页就会接收到一个存储事件。window对象的onstorage属性。

10、cookie是指Web浏览器存储的少量数据,同时它是与具体的Web页面或者站点相关的。cookie最早是设计为被服务端所用的,从最底层来看,作为HTTP协议的一种扩展实现它。cookie数据会自动在Web浏览器和Web服务器之间传输的,因此服务端脚本就可以读写存储在客户端的cookie的值。

11、cookie默认的有效期很短暂,它只能维持在Web浏览器的会话期间,一旦用户关闭浏览器,cookie保存的数据就丢失了。要注意的是,这与sessionStorage的有效期是有区别的:cookie的作用域并不局限在浏览器的单个窗口中,它的有效期和整个浏览器进程一致。可以通过设置max-age属性延长有效期。

12、和localStorage和sessionStorage类似,cookie的作用域是通过文档源和文档路径来确定的。该作用域通过cookie的path和domain属性也是可以配置的。默认情况下,cookie和创建它的Web页面相关,并对该Web页面以及和该Web页面同目录或者子目录的其他Web页面可见。

13、cookie的名值中的值是不允许包含分号、逗号和空白符,因此,在存储前一般可以采用JS核心的全局函数encodeURIComponent()对值进行编码,相应地,读取cookie值的时候采用decodeURIComponent()函数解码。

14、为了更好地查看cookie的值,一般会采用split()方法将cookie值中的名值对都分离出来。

15、想要将应用程序“安装”到应用程序缓存中,首先要创建一个清单(.appcache):包含了所有应用程序依赖的所有URL列表,然后通过在应用程序主HTML页面的<html>标签中设置manifest属性,指向到该清单文件就可以了。清单文件的首行内容必须以“CACHE MANIFEST”字符串开始。

16、当一个Web应用从缓存中载入的时候,所有与之相关的文件也是直接从缓存中获取。在线状态下,浏览器会异步地检查清单文件是否有更新。

17、对于简单的Web应用而言,在更新清单文件之后,用户必须载入应用两次才能保证最新的版本生效:第一次是从缓存中载入老版本随后更新缓存,第二次才从缓存中载入最新的版本。

18、通过navigator.onLine属性,可以检测浏览器是否在线,同时,在window对象上注册在线和离线事件的处理程序,可以检测网络连接状态的改变。

js-权威指南学习笔记20的更多相关文章

  1. js权威指南---学习笔记02

    1.JS只有函数作用域,没有块级作用域这个概念: 它有一个特性——声明提前:在同一个函数中不同位置声明的变量,都被提前在函数开始的时候,执行声明操作:在原先位置执行赋值操作: 2.声明的全局变量,相当 ...

  2. js权威指南学习笔记(四)对象

    1.创建对象 (1).通过对象直接量的方式创建 说明:对象直接量是由若干名/值对组成的映射表,名/值对中间用冒号分隔,名/值对之间用逗号分隔,整个映射表用花括号括起来. 如:       5 5   ...

  3. js权威指南学习笔记(一)类型、值和变量

    1.数据类型:原始类型(primitive type) 和对象类型(object type) 原始类型包括数字.字符串和布尔值: 除数字.字符串.布尔值.null(空).undefined(未定义), ...

  4. js权威指南---学习笔记01

    1.当函数赋值给对象的属性时,就变为了方法:2.被零整除不报错,只会返回无穷大(Infinity)或者负无穷大.例外:零除以零等于非数字(NaN).3.NaN与任何值都不相等! 4.Javascrip ...

  5. js权威指南学习笔记(三)语句

    1.声明语句 如果用var声明的变量没有初始化,那么这个变量的值会被初始化为undefined. 函数声明语句的语法如下:       4 4           1 console.log(func ...

  6. js权威指南学习笔记(二)表达式与运算符

    1.数组初始化表达式 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充undefined.如:       2 2           1 var arr = [1,,,,,6]; 2 ...

  7. JavaScript 权威指南-学习笔记(一)

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...

  8. 《JS权威指南学习总结》

    JS权威指南学习总结:http://www.cnblogs.com/ahthw/category/652668.html

  9. 《JS权威指南学习总结--开始简介》

    本书共分成了四大部分: 1.JS语言核心 2.客户端JS 3.JS核心参考 4.客户端JS核心参考 其中 <JS权威指南学习总结--1.1语法核心> 是:第一部分JS语言核心 各章节重点 ...

  10. HTTP权威指南-学习笔记

    目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...

随机推荐

  1. postgresql-shared_buffers调整

    shared_buffers大小调整: http://www.rummandba.com/2011/02/sizing-sharedbuffer-of-postgresql.html SELECT  ...

  2. SQL面试题之行转列

    典型的课程表: mysql> select * from course; +----+------------+----------+------------+ | id | teacher_i ...

  3. odoo开发笔记--工作流

    虽然odoo10里边取消了工作流 Odoo Workflow http://www.jeffzhang.cn/Odoo-Workflow-Notes/

  4. 关于oracle RAC心跳线采用直连 还是交换机连接的建议

    关于oracle RAC心跳线的连接方式,各个论坛,包括网上文章的说法是:官方说是不建议直连,建议采用交换机连接的方式!PS:但是,一直没有找到官方文档的出处,有知道的兄弟,烦请评论区提供下地址!!! ...

  5. Nutch抓取流程

    nutch抓取流程注入起始url(inject).生成爬取列表(generate).爬取(fetch).解析网页内容(parse).更新url数据库(updatedb)1:注入起始url(inject ...

  6. (转)Python3之requests模块

    原文:https://www.cnblogs.com/wang-yc/p/5623711.html Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了.它是为另 ...

  7. 命令行下更好显示 mysql 查询结果

    在 linux命令行中,直接进行 mysql查询时,有时查询的结果字段较多,显示的效果就很不友好: 但 mysql支持以另一种方式来显示结果,如下: 普通是 SQL 是以分号 ; 结束的,如果改为 \ ...

  8. 将本地代码提交到github

    最近练习了freemarker 做了个代码生成工具,想提交到github上,在本地进行了提交,执行如下些命令 git init git add . * git commit -m "comm ...

  9. gateway-workman

    最外层start.php,设置全局启动模式,加载Application里的个子服务目录下应用的启动文件(start开头,这些文件都是workman\work类的子类,在载入文件的同时,这些子服务会生成 ...

  10. 复刻smartbits的国产网络测试工具minismb功能特点-如何加载、发送PCAP数据包

    复刻smartbits的网络性能测试工具minismb,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此以太网测试工具测试任何ip网络设备的端口吞吐率,带宽,并发 ...