企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
1.支持离线Web应用是HTML5开发的另一个重点。所谓离线Web应用,就是在设备不能上网的情况下仍然可以运行的应用。 2.开发离线Web应用需要几个步骤,首先是确保应用知道设备是否能上网,以便下一步执行正确的操作。然后,应用还必须能访问一定的资源(图像、JavaScript、CSS等),只有这样才能正常工作。最后,必须有一块本地空间能用于保存数据,无论是否能上网都不妨碍读写。 ## 离线检测 * * * * * 3.HTML5定义了一个navigator.onLine属性,用于获取设备是在线还是离线。此外HTML5还定义了online和offline事件,当网络在离线和在线状态切换时触发。 ## 应用缓存 * * * * * 4.HTML5的应用缓存(application cache或简称为appcache)是专门为开发离线web应用而设计的。appcache就是从浏览器的缓存中分出来的一块缓存区。要想在这个缓存中保存数据,可以使用一个描述文件(manifest file),列出要下载和缓存的资源,然后在<html>标签中的mani属性中指定这个文件路径,就可以将描述文件和页面关联起来。 ## 数据存储 * * * * * 5.随着Web应用的出现,也产生了对于能够直接在客户端上存储用户信息(包括登录信息、偏好设定等等)能力的要求。 #### cookie * * * * * 6.HTTP Cookie,通常直接叫做cookie,最初是用在客户端用于存储会话信息的。该标准要求服务器对任意HTTP请求发送Set-Cookie HTTP头作为响应的一部分,其中包含会话信息,浏览器会存储这样的会话信息,并在这之后,通过为每个请求添加Cookie HTTP头将信息发送回服务器。 7.**cookie在性质上是绑定在特定的域名下的。当设定了一个cookie后,再给创建它的域名发送请求时,都会包含这个cookie。这个限制确保了储存在cookie中的信息只能让批准的接受者(服务器)访问,而无法被其他域访问。** 8.浏览器还对单个域名下,cookie的数量(通常是50或无限制)和cookie的尺寸(4096B加减1,这个尺寸是单个域名下所有cookie加起来占据的空间不得大于此)作出了限制。违反前者浏览器会清除以前设置的单个cookie,违反后者则该域名下的所有cookie会被浏览器直接丢弃。 9.cookie由浏览器保存的以下几块信息构成: (1)名称-值:必须被URL编码。实际发送回服务器的只有这个名值对。 (2)域:cookie对哪个域是有效的。所有向该域发送的请求中都会包含这个cookie信息。这个值可以包含子域,也可以不包含它(如.wrox.com则对wrox.com的所有子域都有效)。如果没有显式设定这个值,那么这个值会被认作来自设置cookie的那个域。 (3)路径:对于指定域中的那个路径,应该向服务器发送cookie。例如可以指定cookie只有从http://www.wrox.com/books/ 中才能访问,那么http://www.wrox.com 的页面就不会被发送cookie信息。 (4)失效时间:表示cookie何时应该被删除的时间戳。默认情况下,浏览器会话结束(关闭当前页面标签)时即将所有cookie删除;不过也可以自己以GMT格式的日期设置删除时间。 (5)安全标识:指定后,cookie只有在使用SSL连接的时候才会发送到服务器。 10.cookie实例: ~~~ HTTP/1.1 200 OK Content-type: text/html Set-Cookie: name=value; expires=Mon, 22-Jan-07 07:10:24 GMT; domain=.wrox.com; path=/; secure ~~~ 11.JavaScript中的cookie操作通过BOM的document.cookie接口。当用来获取属性值时,document.cookie返回当前页面可用的所有cookie字符串,一系列由分号隔开的名值对儿: `name1=value; name2=value; name3=value` 当用于设置值时,document.cookie属性可以设置为一个新的cookie字符串。这个cookie字符串会被解释并添加到现有的cookie集合中,除非设置的cookie的名称已经存在,否则不会覆盖cookie。设置cookie的格式如下,和Set-Cookie头中使用的格式一样(名值对要先编码): `document.cookie = 'name=ken; domain=.wrox.com'` 12.子cookie技术是指通过在单个cookie中存储多个名值对来绕开浏览器对单个域名下的cookie数限制。 `name=name1=value1&name2=value2&name3=value3` 13.由于所有的cookie都会由浏览器作为请求头发送,所以在cookie中存储大量信息影响特定域的请求性能。因此最好还是尽可能减少cookie中存储的信息,以避免影响性能。此外,不要在cookie中存储重要和敏感的数据,因为cookie并非存储在一个安全环境中,其中包含的任何数据都可以被其他人访问。 #### Web存储机制 * * * * * 14.Web Storage的目的是克服由cookie带来的一些限制,当数据需要被严格控制在客户端上,无需持续地将数据发回服务器。 15.Storage类型提供最大的存储空间(因浏览器而异)来存储名值对,只能存储字符串。Storage的实例方法如下: (1)clear():删除所有值 (2)getItem(name):根据指定的名称name获取对应的值 (3)removeItem(name):删除由name指定的名值对 (4)setItem(name):为指定的name设置一个对应的值 (5)key(index):获得index处的值 16.cookie、sessionStorage、LocalStorage的区别见https://segmentfault.com/a/1190000002723469 17.indexedDB在iOS和早期android中支持不善,不作深入学习。