SlideShare una empresa de Scribd logo
1 de 44
13. 瀏覽器儲存方案
• 學習目標
– 認識Cookie
– 使用Web Storage
– 操作Indexed Database
2
Cookie
• 為了在無狀態協定上支援狀態管理
• 現在最新的規範為RFC 6265
• Cookie可儲存的資訊量非常有限
3
Cookie安全
• Domain屬性可用來指定,Cookie可以送往哪
些網域
– 在沒有指定的情況下,預設為來源網域,而且不包
含子網域
– 如果設定了Domain屬性,就會包含設定網域之子
網域
• Path屬性用來指定Cookie可以送往網域下哪
些目錄(包含子目錄),在沒有設置的情況下,
預設是來源目錄
• 相同Domain與Path的資料會存為一個檔案
4
• RFC 6265規範伺服端設置Cookie時,可以
附加HttpOnly屬性,令Cookie僅可用於
HTTP傳輸,不能被JavaScript讀取。
• RFC 6265也規範了伺服端設置Cookie時,
可以附加Secure屬性,要求客戶端只能在
安全連線(例如HTTPS加密)發送Cookie
5
document.cookie
• 客戶端要設置Cookie與Set-Cookie標頭
無關
• 只要對document.cookie設定'k1=v1'
形式的字串,就會直接在瀏覽器儲存
Cookie
6
7
8
• 若要透過document.cookie設置Cookie
屬性,格式與Set-Cookie時的要求相同
• 每設定一次就會產生一個Cookie
• 對document.cookie取值,並非取得最
後設定的Cookie,而是個
'k1=v1;k2=v2'格式的字串
9
10
11
12
13
14
Web Storage
• 可以透過sessionStorage或
localStorage在客戶端儲存資訊
• Web Storage與HTTP沒有關係
• 對於不用在請求中發送給伺服端的狀態,
可以使用Web Storage儲存
15
• 主要規範了Storage、sessionStorage、
localStorage介面,以及storage事件
• Storage介面定義了key()、getItem()、
setItem()、removeItem()、clear()
方法,以及length特性
16
• localStorage為同源的頁面提供一個
Storage實例
• 儲存的資料可以長期保存,關閉瀏覽器後
資料不會消失
• 不提供過期時間的機制,不需要的資料必
須自行刪除
17
• sessionStorage與HTTP會話的狀態管理
沒有關係,而是指每個頂層瀏覽環境各自
的狀態
• 每個頂層頁面各擁有一個Storage實例
• 如果使用多個分頁請求同一來源的資源,
每個分頁各自會擁有一個Storage實例
• 分頁間不能共用資料,在分頁關閉後,資
料就會消失
18
19
20
21
storage事件
• 若有Storage實例因為執行了setItem()、
removeItem()與clear()方法,導致
Storage實例儲存的內容「不同」,「其
他共享Storage實例的文件」,window實
例就會觸發storage事件
• 沒有改變內容,只是又設定相同值,並不
會觸發事件
• 當前文件,不會觸發storage事件
22
23
24
25
26
Indexed Database
• W3C在2015年1月發佈
• 對象並非關聯式資料庫,也沒有SQL語句的
支援,而像是NoSQL資料庫
• 2018年1月更進一步發佈了Indexed
Database API 2.0
27
• 並非關聯式資料庫
• 相關API是基於非同步
• 可儲存的資料類型不限於字串,也可儲存
ArrayBuffer等二進位資料實例
• 基於同源策略,只能存取相同來源的資料
庫
28
• open()方法傳回IDBOpenDBRequest實
例,代表對資料庫的開啟請求
• 開啟成功會觸發success事件,發生錯誤
會觸發error事件
• result可取得IDBDatabase實例
29
30
• 如果儲存的資料是物件,可以為物件的特
性名稱建立索引(Index),之後可以根據
索引來查找資料
31
• 若要存取資料庫,都必須在交易
(Transaction)中進行
• 開啟交易是透過IDBDatabase實例的
transaction()方法
32
33
34
35
36
37
封裝資料庫操作
38
39
40
41
42
43
44

Más contenido relacionado

La actualidad más candente

關聯式資料庫系統的規劃
關聯式資料庫系統的規劃關聯式資料庫系統的規劃
關聯式資料庫系統的規劃Simon Huang
 
阿里CDN技术揭秘
阿里CDN技术揭秘阿里CDN技术揭秘
阿里CDN技术揭秘Joshua Zhu
 
Ch05 Servlet進階API、過濾器與傾聽器
Ch05 Servlet進階API、過濾器與傾聽器Ch05 Servlet進階API、過濾器與傾聽器
Ch05 Servlet進階API、過濾器與傾聽器Justin Lin
 
MySQL快速入门与提高
MySQL快速入门与提高MySQL快速入门与提高
MySQL快速入门与提高mysqlpub
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现iammutex
 
第一讲 My sql初步
第一讲 My sql初步第一讲 My sql初步
第一讲 My sql初步hjl888666
 
Redis 常见使用模式分析
Redis 常见使用模式分析Redis 常见使用模式分析
Redis 常见使用模式分析vincent253
 
高性能Web应用缓存架构设计浅谈
高性能Web应用缓存架构设计浅谈高性能Web应用缓存架构设计浅谈
高性能Web应用缓存架构设计浅谈Alvin Qi
 
Ch10 Web容器安全管理
Ch10 Web容器安全管理 Ch10 Web容器安全管理
Ch10 Web容器安全管理 Justin Lin
 
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能Feng Yu
 
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosqlknuthocean
 
了解内存
了解内存了解内存
了解内存Feng Yu
 
Buffer pool implementaion inno db vs oracle
Buffer pool implementaion inno db vs oracleBuffer pool implementaion inno db vs oracle
Buffer pool implementaion inno db vs oraclefrogd
 
Memcached浅析 韩建华
Memcached浅析 韩建华Memcached浅析 韩建华
Memcached浅析 韩建华youzitang
 
MySQL新技术探索与实践
MySQL新技术探索与实践MySQL新技术探索与实践
MySQL新技术探索与实践Lixun Peng
 
MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化Jinrong Ye
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130Jinrong Ye
 
Style基础优化之独角兽篇
Style基础优化之独角兽篇Style基础优化之独角兽篇
Style基础优化之独角兽篇fangdeng
 

La actualidad más candente (20)

關聯式資料庫系統的規劃
關聯式資料庫系統的規劃關聯式資料庫系統的規劃
關聯式資料庫系統的規劃
 
阿里CDN技术揭秘
阿里CDN技术揭秘阿里CDN技术揭秘
阿里CDN技术揭秘
 
Ch05 Servlet進階API、過濾器與傾聽器
Ch05 Servlet進階API、過濾器與傾聽器Ch05 Servlet進階API、過濾器與傾聽器
Ch05 Servlet進階API、過濾器與傾聽器
 
MySQL快速入门与提高
MySQL快速入门与提高MySQL快速入门与提高
MySQL快速入门与提高
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
 
第一讲 My sql初步
第一讲 My sql初步第一讲 My sql初步
第一讲 My sql初步
 
Redis 常见使用模式分析
Redis 常见使用模式分析Redis 常见使用模式分析
Redis 常见使用模式分析
 
高性能Web应用缓存架构设计浅谈
高性能Web应用缓存架构设计浅谈高性能Web应用缓存架构设计浅谈
高性能Web应用缓存架构设计浅谈
 
Redis介绍
Redis介绍Redis介绍
Redis介绍
 
Ch10 Web容器安全管理
Ch10 Web容器安全管理 Ch10 Web容器安全管理
Ch10 Web容器安全管理
 
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能
 
Mesos intro
Mesos introMesos intro
Mesos intro
 
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql
 
了解内存
了解内存了解内存
了解内存
 
Buffer pool implementaion inno db vs oracle
Buffer pool implementaion inno db vs oracleBuffer pool implementaion inno db vs oracle
Buffer pool implementaion inno db vs oracle
 
Memcached浅析 韩建华
Memcached浅析 韩建华Memcached浅析 韩建华
Memcached浅析 韩建华
 
MySQL新技术探索与实践
MySQL新技术探索与实践MySQL新技术探索与实践
MySQL新技术探索与实践
 
MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
 
Style基础优化之独角兽篇
Style基础优化之独角兽篇Style基础优化之独角兽篇
Style基础优化之独角兽篇
 

Similar a 13. 瀏覽器儲存方案

Zh tw introduction_to_hadoop and hdfs
Zh tw introduction_to_hadoop and hdfsZh tw introduction_to_hadoop and hdfs
Zh tw introduction_to_hadoop and hdfsTrendProgContest13
 
The Rails 4 Way Chapter 1
The Rails 4 Way Chapter 1The Rails 4 Way Chapter 1
The Rails 4 Way Chapter 1Drake Huang
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2redhat9
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结redhat9
 
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場twMVC
 
云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路li luo
 
Azure 迁移之道
Azure 迁移之道Azure 迁移之道
Azure 迁移之道Tao Wang
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁reinhardx
 
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3redhat9
 
Web dev road map part one
Web dev road map part oneWeb dev road map part one
Web dev road map part one安 闫
 
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理Justin Lin
 

Similar a 13. 瀏覽器儲存方案 (13)

Zh tw introduction_to_hadoop and hdfs
Zh tw introduction_to_hadoop and hdfsZh tw introduction_to_hadoop and hdfs
Zh tw introduction_to_hadoop and hdfs
 
The Rails 4 Way Chapter 1
The Rails 4 Way Chapter 1The Rails 4 Way Chapter 1
The Rails 4 Way Chapter 1
 
File api
File apiFile api
File api
 
File api
File apiFile api
File api
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结
 
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
 
云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路
 
Azure 迁移之道
Azure 迁移之道Azure 迁移之道
Azure 迁移之道
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
 
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3
 
Web dev road map part one
Web dev road map part oneWeb dev road map part one
Web dev road map part one
 
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
 

Más de Justin Lin

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring BootJustin Lin
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityJustin Lin
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走Justin Lin
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMailJustin Lin
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Justin Lin
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫Justin Lin
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤Justin Lin
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTLJustin Lin
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSPJustin Lin
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Justin Lin
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理Justin Lin
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應Justin Lin
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletJustin Lin
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式Justin Lin
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題Justin Lin
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步Justin Lin
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能Justin Lin
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組Justin Lin
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換Justin Lin
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構Justin Lin
 

Más de Justin Lin (20)

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSP
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構
 

13. 瀏覽器儲存方案